应用程序仅在发布模式下崩溃共享文件对话框

时间:2017-11-16 22:49:20

标签: c# uwp windows-10

当我打开文件共享对话框时,我的应用程序崩溃,仅在发布模式下发生,在调试模式下,一切正常。 这是我的代码:

        private List<IStorageFile> fileSelectedToShare;

        private void shareFileAppBarButton_Click(object sender, RoutedEventArgs e)
            {
                dataTransferManager = DataTransferManager.GetForCurrentView();
                dataTransferManager.DataRequested += DataTransferManager_DataRequested;

                DataTransferManager.ShowShareUI();
            }

            private void DataTransferManager_DataRequested(DataTransferManager sender, DataRequestedEventArgs args)
            {
                if (fileSelectedToShare == null) return;

                DataRequest request = args.Request;
                if (fileSelectedToShare.Count != 0) { 
                    request.Data.Properties.Title = "Share";
                    request.Data.Properties.Description = "Share the selected document";
                    request.Data.SetStorageItems(fileSelectedToShare);
                    fileSelectedToShare.Clear();
                }
                dataTransferManager.DataRequested -= DataTransferManager_DataRequested;
            }

fileSelectedToShare已初始化并包含文件。

这是例外:

  

System.Runtime.InteropServices.MissingInteropDataException:'ComTypeMarshalling_MissingInteropData,System.Collections.Generic.IEnumerable。有关详细信息,请访问http://go.microsoft.com/fwlink/?LinkId=623485'

1 个答案:

答案 0 :(得分:1)

不确定原因,但将文件引用复制到另一个集合并将后者传递到request.Data.SetStorageItems()会使代码工作:

    private void DataTransferManager_DataRequested(DataTransferManager sender, DataRequestedEventArgs args)
    {
        if (fileSelectedToShare == null) return;

        DataRequest request = args.Request;
        if (fileSelectedToShare.Count != 0)
        {
            request.Data.Properties.Title = "Share";
            request.Data.Properties.Description = "Share the selected document";

            List<IStorageItem> files = new List<IStorageItem>(fileSelectedToShare);
            request.Data.SetStorageItems(files);

            fileSelectedToShare.Clear();
        }
        dataTransferManager.DataRequested -= DataTransferManager_DataRequested;
    }
相关问题