2011-06-26 15 views
1

BaloonTipを破棄する前に、タイムアウトを発生させたいのですが、NotifyIconメソッドがあります。タイムアウトが発生した後、NotifyIconを破棄する方法(C#)

private void button1_Click(object sender, EventArgs e) 
{ 
    notifyIcon1.Visible = true; 
    notifyIcon1.ShowBalloonTip(30000); 
    <wait until timeout occurs> 
    notifyIcon1.Dispose(); 

} 
+0

ここではタイムアウトを待つ方法、または気球がすぐに非表示になっていますか? –

+0

@ Jan-Peter Vosタイムアウトを行うには –

+0

回答:Thread.Sleep(5000); –

答えて

0

タイマーを使用してみてください。
は...何かのようにする必要があります:

private Timer taskTimer; 
private NotifyIcon notifyIcon1; 

private void button1_Click(object sender, EventArgs e) 
{ 
    notifyIcon1.Visible = true; 
    notifyIcon1.ShowBalloonTip(30000); 
    taskTimer = new Timer(TimerCallback, notifyIcon1, 30000, System.Threading.Timeout.Infinite); 
} 

と...

void TimerCallback(object notifyIcon1Obj) 
{ 
    lock (notifyIcon1Obj) 
    { 
     NotifyIcon notifyIcon1 = (NotifyIcon)notifyIcon1Obj; 
     notifyIcon1.dispose(); 
     notifyIcon1 = null; 
    } 
} 

HTH

+0

タイマーの種類が間違っています。スレッドプールスレッド上にコントロールを配置することはできません。どちらもコンパイルされません。代わりに、System.Windows.Forms.Timerを使用します。 –

+0

ポイントは10Xです。 –

3
notifyIcon1.BalloonTipClosed += delegate {notifyIcon1.Dispose();}; 
1

が、私はむしろ、新しいインスタンスを配置/再作成するのではなく、NotifyIconを非表示にしますそれの。

関連する問題