3 つのメソッドのいずれかでメソッドを呼び出す はどう違いますか?
- 新しいスレッドの作成経由
- Invoke による同期呼び出し
- BeginInvoke または EndInvoke による非同期呼び出し
私は、すべての呼び出しがフードの下で一致するデリゲートを使用すると想定しています。
3 つのメソッドのいずれかでメソッドを呼び出す はどう違いますか?
私は、すべての呼び出しがフードの下で一致するデリゲートを使用すると想定しています。
(.NETにユーザー名が指定されていると仮定します...)これらの3つのオプションは、デリゲートを使用するさまざまな方法です。
新しいスレッドを作成することは、特に「メソッドを呼び出す」のではなく、新しいスレッド内で実行するメソッドとして指定されたデリゲートを使用して新しいスレッドを開始します。これにより、まったく新しいスレッドが起動され、別のスレッド内でデリゲートが実行されます。
BeginInvoke / EndInvokeを介してデリゲートを非同期的に呼び出すことも同様ですが、新しいスレッドを作成する代わりにThreadPoolを使用する点が異なります。
Invokeを介してデリゲートを同期的に呼び出すと、現在実行中のスレッドでデリゲートが直接呼び出されます。これは事実上、デリゲートによって参照されているメソッドを呼び出すだけです。