1

3 つのメソッドのいずれかでメソッドを呼び出す はどう違いますか?

  1. 新しいスレッドの作成経由
  2. Invoke による同期呼び出し
  3. BeginInvoke または EndInvoke による非同期呼び出し

私は、すべての呼び出しがフードの下で一致するデリゲートを使用すると想定しています。

4

1 に答える 1

1

(.NETにユーザー名が指定されていると仮定します...)これらの3つのオプションは、デリゲートを使用するさまざまな方法です。

新しいスレッドを作成することは、特に「メソッドを呼び出す」のではなく、新しいスレッド内で実行するメソッドとして指定されたデリゲートを使用して新しいスレッドを開始します。これにより、まったく新しいスレッドが起動され、別のスレッド内でデリゲートが実行されます。

BeginInvoke / EndInvokeを介してデリゲートを非同期的に呼び出すことも同様ですが、新しいスレッドを作成する代わりにThreadPoolを使用する点が異なります。

Invokeを介してデリゲートを同期的に呼び出すと、現在実行中のスレッドでデリゲートが直接呼び出されます。これは事実上、デリゲートによって参照されているメソッドを呼び出すだけです。

于 2012-04-05T18:06:21.250 に答える