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>' 

我认为这与以我的方式传递参数有关;我不知道为什么这应该在 VB.NET 而不是 C# 中工作?

非常感谢您的帮助。

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,并且您可能需要使用 lambda 将参数放入 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

假设PerformJob是一个Func<string>我不认为你需要Func<string>演员表。

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