2012-03-02 6 views
1

私はAsyncCtpLibrary v.3を追加しました。非同期のWebページからいくつかのサンプルコードを取得しました。 TestFixtureで包み込んで遊んでいます。asyncでエラーが発生しました

エラーが発生しています:なぜでしょうか?

エラー1 - 無効なトークン 'ボイド' クラス、構造体、またはインターフェイスメンバー宣言

エラー2 - 。

[TestFixture] 
public class AsyncTests 
{ 
    [Test] 
    public async void AsyncRunCpu() 
    { 
     Console.WriteLine("On the UI thread."); 

     int result = await TaskEx.Run(
      () => 
       { 
        Console.WriteLine("Starting CPU-intensive work on background thread..."); 
        int work = DoCpuIntensiveWork(); 
        Console.WriteLine("Done with CPU-intensive work!"); 
        return work; 
       }); 

     Console.WriteLine("Back on the UI thread. Result is {0}.", result); 
    } 

    public int DoCpuIntensiveWork() 
    { 
     // Simulate some CPU-bound work on the background thread: 
     Thread.Sleep(5000); 
     return 123; 
    } 
} 
+0

async/awaitキーワードにVS11を使用しているとします。それが大きな違いをもたらすかどうかは分かりませんが、新しいTask.Factory.StartNewを試してみてください。また、Runコマンドの後に.Resultを追加してみてください。 .ResultはTasksの戻り値の型です。この場合はintです – Jon

+1

'My Documents'の下にAsync CTPフォルダがあるかどうか確認してください。 async CTPのインストールに関する多くの問題がありました(フォーラムで議論されています)(http://social.msdn.microsoft.com/Forums/en-US/async/threads)。これは、非同期CTPが他のVSアップデートを妨害する帯域外アップデートであるという事実に帰着します。この時点(VS11が差し迫っている)では、インストーラを修正することは考えにくいと思います。 VS11がリリースされると、私は非同期CTPが引き出され、もはや利用できなくなることを期待しています。 –

答えて

0

を、私はそれをすることになっていると思う:

[Test] 
public async Task AsyncRunCpu() 
{ 
    // ... 
} 

としてこれまで私はvoid戻り値の型と非同期メソッドを言うことができるように特別ないくつかの方法である - コンパイラは、シナリオのこの種の警告を発行していない理由を不思議に思う...

あなたは.NET4でasync/awaitを使用することができますところで.0、プロジェクトにMicrosoft.BCL.Asyncへの参照を追加するだけです。唯一の違いは、Taskの関連機能がTaskExタイプに存在することです。

4

あなたは単にあなたのプロジェクトに.dllファイルを追加し、それが動作することはできません:非同期CTPは、C#言語の構文を拡張し、「ノーマル」、コンパイラがない

コードを予想必要なランタイムアセンブリが存在する場合でも、新しいキーワードを理解してください。あなたは公式インストーラを使用してインストールする必要があります。 (注:最初の最後のサービスパック以降のすべてのVisual Studioのアップデートをアンインストールするか、インストールすると、あなたはその後更新プログラムを再インストールすることができます成功しません。)

+1

VS11ベータ版が利用可能になった時点で非同期CTPを使用する理由と、おそらくVS10のインストールに影響しないでしょうか? –

+0

@JonSkeet非同期CTPがなければ、実行時に.NET 4.5が必要です。それは必ずしも悪いことではありませんが、心に留めておくべきことです。 – hvd

+0

現時点では、プロダクションに非同期CTPを個人的に使用していません。問題が多すぎます。私は間違いなく代わりにベータ版で作業します。 –

関連する問題