0

アプリで共有契約を使用してファイルを共有しようとしています:-

public async void SendingEmail(UtilityClass objselecteditem)
{
    try
    {
        StorageFolder tempFolder = Windows.Storage.ApplicationData.Current.LocalFolder;
        StorageFile sampleFile = await 
        tempFolder.CreateFileAsync("StundentDetails.html",   
            CreationCollisionOption.ReplaceExisting);
        await Windows.Storage.FileIO.WriteTextAsync(sampleFile, htmlBuilder.ToString());
        await RegisterForShare();                        
    }
    catch (Exception ex)
    {    
    }
}

上記のメソッドでこの RegisterForShare() を呼び出しています:-

private async Task RegisterForShare()
{
    DataTransferManager dataTransferManager = DataTransferManager.GetForCurrentView();       
    dataTransferManager.DataRequested += new TypedEventHandler<DataTransferManager, DataRequestedEventArgs>(this.ShareStorageItemsHandler);            
    DataTransferManager.ShowShareUI();

}

private async void ShareStorageItemsHandler(DataTransferManager sender, DataRequestedEventArgs e)          
{
    DataRequest request = e.Request;
    request.Data.Properties.Title = "Student Confirmation Email";
    request.Data.Properties.Description = "Student Details";



    // Because we are making async calls in the DataRequested event handler,
    // we need to get the deferral first.
    DataRequestDeferral deferral =  request.GetDeferral();

    // Make sure we always call Complete on the deferral.
    try
    {
        StorageFolder tempFolder = Windows.Storage.ApplicationData.Current.LocalFolder;
        StorageFile EmailFile = await tempFolder.GetFileAsync("StundentDetails.html");      
        List<IStorageItem> storageItems = new List<IStorageItem>();
        storageItems.Add(EmailFile);
        request.Data.SetStorageItems(storageItems);


    }
    finally
    {
        deferral.Complete();
    }
}

初めて正しく実行され、ファイルを共有するために共有 contracxt が開かれていますが、再度共有しようとすると (ファイルを共有するために 2 回目)、「予期しない時間にメソッドが呼び出されました」という例外がスローされます。 "、私が何か間違ったことをしている場合はお知らせください。pls は私を修正します。

前もって感謝します。

4

1 に答える 1

0

この行を置き換えてみてください:

dataTransferManager.DataRequested += new TypedEventHandler<DataTransferManager, DataRequestedEventArgs>(this.ShareStorageItemsHandler); 

dataTransferManager.DataRequested -= ShareStorageItemsHandler;
dataTransferManager.DataRequested += ShareStorageItemsHandler;
于 2012-11-07T16:07:28.577 に答える