使用相關的具備條件:
1.前提是必須窗體實例完畢,再觸發相關事件開始調用
2.代碼如下:如在窗體加載完畢的一個button事件調用線程1
Thread th1= new Thread(new ThreadStart(process1));
th1.Start();
//開始調用線程
private void process1()
{
while (true)
{
Thread.Sleep(Convert.ToInt32(sleepTime));//設置延遲時間
Thread th3 = new Thread(new ThreadStart(process3));//刷新任務
th3.Start();
}
}
//具體使用BeginInvoke方法調用窗體
private void process3()
{
MethodInvoker mi = new MethodInvoker(this.ShowMsgForm);
this.BeginInvoke(mi);
}
窗體實例亦可分爲兩種情況
1.直接實例化
private void ShowMsgForm()
{
ArasUpboxNews setNews = new ArasUpboxNews();//實例窗體
setNews.Show(this);
}
2.判斷窗體是否存在的實例
private void ShowMsgForm()
{
ArasUpboxNews setNews = ArasUpboxNews.getinstance();
if (!setNews .Visible)
{
setNews .Show(this);
}
}
3.在ArasUpboxNews窗體中判定窗體是否顯示
private static ArasUpboxNews _initialize = null;
//初始化窗體
public static ArasUpboxNews getinstance()
{
if (_initialize == null)
{
_initialize = new ArasUpboxNews();
}
return _initialize;
}
注意:實例之後一般要用this.Hide();屬性
在form_closed事件中 寫入_initalize = null;
如:private void form_FormClosed(object sender, FormClosedEventArgs e)
{
_initialize = null;
}
在form_closing事件中 寫入this.Hide();
如:private void form_FormClosing(object sender, FormClosingEventArgs e)
{
this.Hide();
}