2011-07-11 4 views
0

デリゲートを必須ではないにもかかわらず簡単に使用できますか?デリゲートを必須ではないにもかかわらず簡単に使用できますか?

+1

:あなたが発信者を変更することができない場合、

WirelessGreenLight.Invoke(new MethodInvoker(redGreenLight)); 

のか:あなたのサンプルコードを見てみると


が、これはあなたが必要とするすべてであります – SLaks

+0

私は、1つの更新メソッドへの統合/リファクタリングを検討し、1回だけ起動します(Control.InvokeRequiredの場合に依存します)。 –

+0

私はその質問を理解していません。 @SLaks、Invokeはまた、UIスレッドを呼び出すためのオプションです。 – Jeff

答えて

1

Control.Invokeを呼び出す場合は、InvokeRequiredを確認する必要はありません。チェックするとチェックされます。

Control.BeginInvoke同じスレッドからのメッセージは時々役に立ちますが、メッセージキューの終わりにコールを置くのではなく、すぐに呼び出します。

具体的なアドバイスをするために何をやっているのかは分かりません。私はあなたが `BeginInvoke`を意味だと思う

public void redGreenLight() 
{ 
    WirelessGreenLight.Invoke(new MethodInvoker(redGreenLightImpl)); 
} 

private void redGreenLightImpl() 
{ 
    // real work done here 
} 
+0

ありがとうBen、私は永続的なことをお詫びしますが、私はWirelessRedLight、MobileRedLight、MobileGrenLightも呼び出す必要があります..つまり、4つのコントロールのいずれか...私は知りたい –

+0

@HelloWorld_Always:いいえ 'if'sです。 'redGreenLight'は常に' Invoke'を使用し、 'redGreenLightImpl'はUIスレッド上で完全に動作するので' Invoke'は必要ありません。 –

+0

oh gotit ...ありがとう! –