2016-11-04 10 views
1

.NET 4.5から4.0へのコードのリターゲティングに関する情報は見つかりません。このアプリケーションをWindows XPにインストールする必要があります。 .NET 4.0メソッドFromResultで.NET 4.5.NET 4.0の.NET 4.5のTask.FromResult()と同等

public async Task <IXLWorksheet> ImportFile(string fileToImport) 
{ 
    ... 
    return await Task.FromResult<IXLWorksheet>(Sheet1) 
} 

私のコードは存在しません。 誰かが.NET 4.0でどのように表示されるべきかを知っていますか?

+0

は、プロジェクトに[ 'マイクロソフトAsync'](https://www.nuget.org/packages/Microsoft.Bcl.Async/)を追加します。パッケージ。 – raidensan

+0

https://msdn.microsoft.com/en-us/library/hh194922(v=vs.110).aspxこれをチェックしてください.Net 4でも、私が覚えているものからasync/awaitを使うことはできません。 – mybirthname

+0

まだ同じです問題。 – P10trek

答えて

2

結果に基づいて作成されたタスクの待っている結果が返されます。解決策は、かなり単純です - awaitドロップ:タスクでそれを包むの世話をするメソッド宣言で

return Sheet1; 

asyncキーワードを。

完了したタスクに既存の値を手動でラップする必要がある場合はTaskCompletionSourceを使用することができます。これはTask.FromResultよりもはるかに巧妙ですが、ほんの少しです。

0

私はTaskCompletionSourceと私の問題を解決し、ここに私のコードだ:

public async Task <IXLWorksheet> ImportFile(string fileToImport) 
     { 
     ... 
       TaskCompletionSource<IXLWorksheet> tcs1 = new TaskCompletionSource<IXLWorksheet>(); 
       Task<IXLWorksheet> t1 = tcs1.Task; 
       tcs1.SetResult(tempFile.Worksheet(1)); 
       return await t1 ; 
     } 
関連する問題