当我打开文件共享对话框时,我的应用程序崩溃,仅在发布模式下发生,在调试模式下,一切正常。 这是我的代码:
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'
答案 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;
}