与此问题相似但不同How do you implement an async action delegate method?
您好, 我有一个方法,它接受两个参数并返回一个结果, 在计算结果时,它称之为等待功能 该方法的参数只能在另一个线程上访问,所以我使用的是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
希望Stephen Cleary能救我:-)我在C#Cookbook的Concurrency中找不到这样的例子。可能我看错了吗?
由于 马丁
答案 0 :(得分:1)
InvokeAsync
方法接受您可能需要的Action
或Func<T>
:
await Dispatcher.InvokeAsync(async () => await fn(a, b));
答案 1 :(得分:0)
好的,今天早上以清醒的头脑看着这个。我回到了跑步的那个,但没有产生结果。结果发现与调度程序关联的线程是状态waitsleepjoin中的后台线程。我需要的对象是图像。通过冻结图像,我发现我根本不需要担心线程问题 - 没有可用的调度程序。 希望这有助于其他人。 马丁