2

クロススレッド操作を行うには、次を使用します。
this.Invoke(new MethodInvoker(() => myMethod());

ただし、たとえば、次のことはできません。

this.Invoke(new MethodInvoker(() => bool myBool = getBool()); 
return myBool;

どうすればいいですか?bool myBool = getBool(); だけではできません。
クロススレッド操作エラーが発生するためです。

前もって感謝します。

4

2 に答える 2

4

これを試して:

delegate T MyDelegate<out T>();
public bool MethodName()
{
    bool b = (bool)this.Invoke(new MyDelegate<bool>(() => getBool()));
    return b;
}
于 2013-07-28T10:00:20.720 に答える
1

よく分からない

しかし、あなたはこのようなことをすることができます

bool myBool = false;
this.Invoke(new MethodInvoker(() => myBool = getBool()));
return myBool;

間違っている場合は、明確にしてください

于 2013-07-28T09:54:51.190 に答える