类似但不同的对这个问题How do you implement an async action delegate method?WPF dispatcher.invokeasync Func键<T,T,TResult>
嗨, 我有两个参数并返回结果, 在计算它会调用awaitable功能 的参数结果的方法该方法只能在另一个线程上访问,所以我使用了dispatcher.CheckAccess,dispatcher.Invoke或dispatcher.InvokeAsync。 迄今为止获得的最佳结果是构建和运行的东西,但即使调用调用被调用,该函数也不会受到影响。
我在引用的线程中发现了由于命名T结果而引起混淆的例子,而我认为T是一个in参数。
我的功能看起来是这样的:
private async Task<TResult>> fn(object arg1, object arg2){return await x(arg1,arg2);}
调度代码看起来是这样的:
if (dispatcher.CheckAccess())
result= await fn(a,b);
else
result=dispatcher.InvokeAsync<TResult>(fn(a,b)); // this is incorrect syntax
希望斯蒂芬·克利里能救我:-)我找不到像这样的例子C#食谱中的并发。大概我看着这种错误的方式?
感谢 马丁
如果你知道你的'InvokeAsync'的调用不正确,为什么不能去MSDN,知道正确的语法? 1)我发现'InvokeAsync'没有超过'Func <..., ...>'作为一个参数; 2)在C#中,不能将方法调用作为参数传递。可能你想使用'InvokeAsync(()=> fn(a,b))' – Maxim
虽然[mm8's answer](https://stackoverflow.com/a/44631088/263693)会让你编译代码,但我通常推荐构建代码,以便后台操作不需要UI层的存在。例如,首先获得'TResult',然后*然后*开始后台操作。 –