2

私はしばらくの間、次のコード行を喜んで使用してきましたが、満足のいく仕事をしているようです。私はそれをC#に変換しようとしています。私は変換しようとしています:

Dim result as string = Await Task(Of String).Factory.StartNew(Function() MyClass.PerformJob(param1,param2,param3))

C# で次のコードを入力しています。

string result = await Task<string>.Factory.StartNew((Func<string>) MyClass.PerformJob((param1,param2,param3));

これにより、次のエラーが生成されます。

'Cannot convert type 'string' to 'System.Func<string>' 

これは、私のやり方でパラメーターを渡すことに関連していると思います。これが C# ではなく VB.NET で機能する理由がわかりません。

助けてくれて本当にありがとうございます。

4

4 に答える 4

1

結果の型が の場合に、MyClass.PerformJobメソッドの結果を にキャストしようとしています。これを使って:Func<string>string

string result = await Task<string>.Factory
    .StartNew(() => MyClass.PerformJob(param1,param2,param3));
于 2012-12-29T20:52:54.477 に答える
1

それを Func にキャストする必要はありません。おそらくラムダを使用して、パラメーターを PerformJob 呼び出しに入れる必要があります。これを試して。

string result = await Task<string>.Factory.StartNew(() => MyClass.PerformJob(param1,param2,param3));
于 2012-12-29T20:53:38.500 に答える
1

'MyClass' を 'this' に置き換える必要があります - C# には 'MyClass' と厳密に同等のものはありません。

string result = await Task<string>.Factory.StartNew(() => this.PerformJob(param1,param2,param3));
于 2012-12-30T04:12:11.500 に答える
0

キャストPerformJobFunc<string>必要ないと思いますFunc<string>

string result = await Task<string>.Factory.StartNew(MyClass.PerformJob(param1,param2,param3));
于 2012-12-29T20:52:29.827 に答える