これは本当に基本的なものだとわかっていますが、私はその周りに自分の心を包み込むのに苦労しています。イベントを定義してイベントが発生したときにデリゲートをキックオフする方法
[OK]をので、私は実行したい方法があります:私は同じ出力タイプで、私のデリゲートを定義し、この方法の適用範囲の外(ただし、私のクラスの範囲内で)、その後
public static void DelegateTest(string testStuff)
{
for (int i = 0; i < 4; i++)
{
Console.WriteLine(testStuff);
}
}
をそして私の方法として、入力パラメータ:
public delegate void myDelegate(string test);
私はそうのように私のデリゲートのインスタンスを作成:
myDelegate md = new myDelegate(DelegateTest);
BeginInvokeによってデリゲートを呼び出すことで、私が好きなだけ何度でも自分のメソッドを開始することができ、メソッドは別のスレッドで並べて実行されます。
md.BeginInvoke("Hello World", null, null);
md.BeginInvoke("Hello World Again", null, null);
md.BeginInvoke("Hello World A Third Time", null, null);
イベントを定義して、イベントが発生したときにメソッドを非同期に開始する方法を教えてください。また、イベントの可能性に関する制限はありますか?私のコンピュータ上で起こることは、イベントとして、または特定のものだけを定義することができますか?
編集:上記を実行した後、たとえば、イベントを作成し、このイベントを「スペースバーが押された」と定義するとします。スペースバーが押されるたびに、これが起こっているイベントです。イベントが発生すると、メソッドを非同期で開始したいので、スペースバーが押されていない場合、メソッドを非同期に開始したくありません。
どうすればいいですか?
「非同期的に」という意味ですか?それとも「同期的に」という意味ですか?彼らはすでに非同期であるようだ。 – yoozer8
私が知っている質問は、メソッドを作成した後にデリゲートを作成し、非同期にメソッドを開始する方法を知っています。次に、イベントを作成し、そのイベントをデリゲートに関連付けます。これを明確にするために質問を更新する必要がありますか? – JMK
@ JMKあなたがすでに考え出したように、イベントを呼び出すことによってイベントを作成します。どのようにしていつやるのがあなた次第です。あなたのプログラムの外でイベントをキャッチしようとしているように聞こえる?どのようなイベントをキャプチャしようとしていますか? – Simon