<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      最近開始做UWP開發,圖省事兒就把自己之前一個Winform項目的一部分代碼拷貝到了新寫的UWP項目中來。整出了一些幺蛾子,下面做一個記錄。

       

      首先提一個重點就是:UWP里關于文件的操作盡量用StorageFile類來搞?。。。。。。。。。。。?/p>

       

      1.UWP的文件選取

      UWP的文件選取使用的是FileOpenPicker,我這里是用來選圖片文件的,不多說直接上代碼:

                  FileOpenPicker fileOpenPicker = new FileOpenPicker();
                  fileOpenPicker.SuggestedStartLocation = PickerLocationId.PicturesLibrary;
                  fileOpenPicker.FileTypeFilter.Add(".jpg");
                  fileOpenPicker.FileTypeFilter.Add(".png");
                  fileOpenPicker.ViewMode = PickerViewMode.Thumbnail;
      
                  var imgFile = await fileOpenPicker.PickSingleFileAsync();
      
                  if (imgFile == null)
                  {
                      return;
                  }

      關于這塊兒的具體的各種操作可以去微軟爸爸那里查,最標準最權威:https://docs.microsoft.com/zh-cn/windows/uwp/audio-video-camera/imaging

       

       

       

       

       

      2.文件讀取操作

      這一塊兒的BUG是最讓我惡心的!!

      最開始的時候這一塊兒的代碼我是直接從Winform項目里直接拷出來的用的是File.ReadAllBytes,結果Debug的時候什么問題都沒有出現,Release出來后直接提示我沒有權限訪問文件(UnauthorizedAccessException)。。。。。

      最初的錯誤代碼(可以在Winform里面用,UWP里面的話Release出來跑不成):

      private async Task<List<ByteArrayContent>> GetFileByteArrayContent(HashSet<string> files)
              {
                  List<ByteArrayContent> list = new List<ByteArrayContent>();
                 
                  foreach (var file in files)
                  {
                      await Task.Run(() => {
                          if(file.Length > 0)
                          {
                              try
                              {
                                  //file是string類型的文件路徑
                                  var fileContent = new ByteArrayContent(File.ReadAllBytes(file));
                                  ContentDispositionHeaderValue dispositionHeader = new ContentDispositionHeaderValue("file");
                                  dispositionHeader.DispositionType = "file";
                                  dispositionHeader.Name = "imageFile";
                                  dispositionHeader.FileName = Path.GetFileName(file);
                                  fileContent.Headers.ContentDisposition = dispositionHeader;
                                  list.Add(fileContent);
                              }
                              catch(Exception ex)
                              {
                                  this.TextBlock_lyric.Text = ex.Message;
                              }
                          }
                      });
                  }
                  return list;
              }

       

      然后我去微軟爸爸那兒里查了一下File.ReadAllBytes函數https://msdn.microsoft.com/en-us/library/system.io.file.readallbytes(v=vs.110).aspx之后發現問題原因應該是沒有權限訪問文件,查到問題所在后就開始用StorageFile的方法來處理自己所選擇的文件修改后的代碼如下:

              private async Task<List<ByteArrayContent>> GetByteArrayContents()
              {
                  List<ByteArrayContent> files = new List<ByteArrayContent>();
                  string exceptionMsg = string.Empty;
                  if (imgFile != null)
                  {
                      try
                      {
                          //imgFile是一個StorageFile類的對象
                          var buffer = await FileIO.ReadBufferAsync(imgFile);
                          byte[] content = new byte[buffer.Length];
                          // Use a dataReader object to read from the buffer
                          using (DataReader dataReader = DataReader.FromBuffer(buffer))
                          {
                              dataReader.ReadBytes(content);
                              // Perform additional tasks
                          }
      
                          var fileContent = new ByteArrayContent(content);
                          ContentDispositionHeaderValue dispositionHeader = new ContentDispositionHeaderValue("file");
                          dispositionHeader.DispositionType = "file";
                          dispositionHeader.Name = "imageFile";
                          dispositionHeader.FileName = imgFile.Path;
                          fileContent.Headers.ContentDisposition = dispositionHeader;
                          files.Add(fileContent);
                      }
                      catch (Exception ex)
                      {
                          exceptionMsg = ex.Message;
                      }
                  }
                  this.TextBlock_lyric.Text += exceptionMsg;
                  return files;
              }

       

      3.其他

      更改控件屬性的操作不能寫到異步操作里,不然會崩

      程序里有讀取文件的操作的話盡量去把Package.appxmanifest文件里對應的權限開一下,雖然有的人說不開也行。。。但是我頭不鐵,我還是老老實實開了。

       

      問題解決后總結出一條經驗,MSDN真好用??!

        

       

      posted on 2018-04-18 13:28  Mr.Owl  閱讀(1210)  評論(5)    收藏  舉報

      主站蜘蛛池模板: 国产小嫩模无套中出视频| 日韩精品卡一卡二卡三卡四| 国产精成人品日日拍夜夜免费| 嘉善县| 激情偷乱人成视频在线观看| 国产精品视频亚洲二区| 中文字幕色偷偷人妻久久| 亚洲a片无码一区二区蜜桃| 国产美女高潮流白浆视频| 国精品无码一区二区三区在线蜜臀| 久久婷婷五月综合色和啪| 国产精品久久久久7777| 国产欧美精品aaaaaa片| 一区二区不卡99精品日韩| 国产国产午夜福利视频| 中国xxx农村性视频| 天天摸天天做天天添欧美| 国产99视频精品免费视频36| 娄烦县| 香蕉亚洲欧洲在线一区| 国产初高中生视频在线观看| 亚洲av无码精品色午夜蛋壳| jizz国产免费观看| 日韩放荡少妇无码视频| 无套后入极品美女少妇| 国产欧美另类久久久精品不卡| 中文字幕日韩一区二区不卡| 国产成人精品视频不卡| 亚洲欧洲精品成人久久曰| 色综合久久久久综合体桃花网| 人人妻人人澡人人爽人人精品av| 国产精品一码在线播放| 免费三级网站| 国产精品区一二三四久久| 久久99久国产精品66| 成人午夜在线观看日韩| 欧美牲交a欧美牲交aⅴ图片| 色综合天天综合网中文伊| 亚洲成在人线AⅤ中文字幕| 又大又粗又硬又爽黄毛少妇| 曰韩高清砖码一二区视频|