我知道這是非常基本的東西,但我正在努力圍繞它進行思考。我該如何定義一個事件,然後在事件發生時啓動一個代表
好了,所以我有我想要運行的方法:
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);
然後,我可以通過BeginInvoking委託儘可能多地啓動我的方法,並且這些方法將在單獨的線程中並行運行。
md.BeginInvoke("Hello World", null, null);
md.BeginInvoke("Hello World Again", null, null);
md.BeginInvoke("Hello World A Third Time", null, null);
我現在如何定義一個事件,並且只在事件發生時異步啓動我的方法?另外,什麼事件可以是什麼限制?我的電腦上發生的任何事情都可以定義爲事件還是隻有某些事情?
編輯:例如說,在完成上述操作後,我想要創建一個事件並將該事件定義爲'空格鍵已被按下'。每次按下空格鍵時,都會發生這種情況。當事件發生時,我想異步啓動我的方法,如果空格鍵未被按下,我不想異步啓動我的方法。
我該怎麼辦?
你真的是指「異步」嗎?或者你的意思是「同步」?看起來他們已經是異步的了。 – yoozer8 2012-02-08 16:21:56
我知道,問題是,一旦我創建了一個方法,然後一個委託並且我知道如何異步啓動該方法,那麼我該如何創建一個事件並將該事件與委託相關聯。我是否需要更新我的問題以清楚說明? – JMK 2012-02-08 16:23:31
@JMK你可以通過調用它來創建事件,因爲你已經知道了。如何和何時完成取決於你。聽起來就像你試圖抓住你的程序之外的事件?你想捕捉什麼事件? – Simon 2012-02-08 16:26:35