vb.net到c#-等待任务的代码转换
我已经愉快地使用下面这行代码有一段时间了,它似乎做得很满意。我想把它转换成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
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));