Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
vb.net到c#-等待任务的代码转换_C#_Wpf_Vb.net_Async Await - Fatal编程技术网

vb.net到c#-等待任务的代码转换

vb.net到c#-等待任务的代码转换,c#,wpf,vb.net,async-await,C#,Wpf,Vb.net,Async Await,我已经愉快地使用下面这行代码有一段时间了,它似乎做得很满意。我想把它转换成C。我正在尝试转换: Dim result as string = Await Task(Of String).Factory.StartNew(Function() MyClass.PerformJob(param1,param2,param3)) 我正在用C#输入以下代码: string result=wait Task.Factory.StartNew((Func)MyClass.PerformJob((param

我已经愉快地使用下面这行代码有一段时间了,它似乎做得很满意。我想把它转换成C。我正在尝试转换:

Dim result as string = Await Task(Of String).Factory.StartNew(Function() MyClass.PerformJob(param1,param2,param3))
我正在用C#输入以下代码:

string result=wait Task.Factory.StartNew((Func)MyClass.PerformJob((param1,param2,param3));
这将生成以下错误:

'Cannot convert type 'string' to 'System.Func<string>' 
“无法将类型“string”转换为“System.Func”
我假设这与以我的方式传递参数有关;我不明白为什么这应该在VB.NET而不是C#中工作


非常感谢您的帮助。

假设
PerformJob
Func
我想您不需要
Func
演员阵容

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

当结果类型为
string
时,您试图将
MyClass.PerformJob
方法的结果强制转换为
Func
。请使用以下方法:

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

您不需要将其强制转换为Func,并且可能需要使用lambda将参数输入到PerformJob调用中。请尝试以下操作

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

您必须将“MyClass”替换为“this”-C#与“MyClass”没有严格的等价物:

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

vb.net也不例外,它是OP给他们创建的类的名称。您想到的是My命名空间,或者用Me来代替它。否-“MyClass”是vb中的一个关键字,与“Me”有着非常相似的含义,但有着微妙的不同。(查阅).我猜在使用Vb.net超过12年后,从未使用过它。它一定没有那么常见。谢谢你提供的信息。:)你说得对-它不常见。在VB编程语言的发展过程中,它是一种“除了厨房水槽之外,什么都可以扔掉”的想法。正如前面提到的,MyClass只是我给一个类起的名字(事后看来,命名是个错误的选择!)。
string result = await Task<string>.Factory.StartNew(() => this.PerformJob(param1,param2,param3));