我有一個condtion如果(!e.ComponentUp),如果其真正的話,我需要等待,直到它什麼檢查,我可以在這裏給條件檢查等待有利條件
我做了這個代碼,但它不是工作
if (!e.ComponentUp)
{
do
{
while (e.ComponentUp);
}
}
我有一個condtion如果(!e.ComponentUp),如果其真正的話,我需要等待,直到它什麼檢查,我可以在這裏給條件檢查等待有利條件
我做了這個代碼,但它不是工作
if (!e.ComponentUp)
{
do
{
while (e.ComponentUp);
}
}
您可以在組件上創建一個名爲「UpChanged」的事件並訂閱該事件。當你看到組件處於'Up'狀態時才能運行的代碼,你可以設置一個標誌來指示你的'任務'正在等待up狀態改變。這樣的事情:
//When you initialize
var e = ...;
e.UpChanged += new EventHandler(Component_UpChanged);
bool waitingForUp = false;
//The code snippet that is waiting for up to be enabled
if (!e.ComponentUp)
waitingForUp = true;
else
DoWorkHere();
//The delegate
void Component_UpChanged(object sender, EventArgs e)
{
if (e.ComponentUp && waitingForUp)
DoWorkHere();
waitingForUp = false;
}
爲什麼你不使用事件?這是第三方組件嗎?
您的代碼無法工作。
首先,如果謂詞爲假,那麼while循環將立即退出。你需要循環否定。第二,除非它是易失性的並且被異步改變,否則循環將不會結束。
第三,這種輪詢將最大化CPU。
使用活動。
你可以給我的代碼做那個事件 – peter 2010-08-19 07:01:07
我想我可以。但是,我認爲這不會有幫助。 – 2010-08-19 15:06:51
可以填寫var e = ...; – peter 2010-08-19 10:52:36
'waitingForUp'的範圍是什麼? – 2010-08-19 14:51:57
@peter我不確定您在何處/如何初始化組件 @steven取決於整體應用程序設計。如果有許多不同類型的任務處於等待模式,組件本身可以封裝這個「任務註冊」邏輯。或者,調用代碼可以監視狀態。 – cordialgerm 2010-08-19 15:17:51