C# winform 等待窗體
阿新 • • 發佈:2019-01-29
考慮到客戶端的使用者體驗,在一些耗時的功能上借鑑了web的體驗。新增一個等待窗體功能。自己搗鼓了半天,簡單弄了一點東西。為了更加靈活性,在建構函式裡新增Form型別的引數。也就是說,窗體可以自定義新增。以下是程式碼,請大夥看看有沒有什麼問題:
</pre><pre code_snippet_id="428407" snippet_file_name="blog_20140717_2_9457378" name="code" class="csharp">using System; using System.Collections.Generic; using System.Text; using System.Threading; using System.Windows.Forms; namespace ThreadWaiting { public class WaitingThread { #region private fields private Thread _thrd; private Form _waitFrm; #endregion private string _error; /// <summary> /// 錯誤資訊 /// </summary> public string Error { get { return _error; } set { _error = value; } } Action<object> _doEvent; public Action<object> DoEvent { get { return _doEvent; } set { _doEvent = value; } } public WaitingThread (Form waitform) { _thrd = new Thread(new ParameterizedThreadStart(StartDo)); _waitFrm = waitform; } /// <summary> /// 執行緒需要工作內容 /// </summary> /// <param name="para"></param> private void StartDo(object para) { _doEvent(para); //直到建立控制代碼 while (!_waitFrm.IsHandleCreated) { } _waitFrm.BeginInvoke(new MethodInvoker(delegate() { _waitFrm.Close(); _waitFrm.Dispose(); })); } /// <summary> /// 啟動waitThre工作 /// </summary> /// <param name="para"></param> public void ThreadStart(object para) { try { _thrd.Start(para); } catch (Exception e) { _error = e.Message; } if (!_waitFrm.IsDisposed) { _waitFrm.ShowDialog(); } } } }
功能比較簡單,測試也沒有發現問題。但自己感覺好像哪裡有點問題,希望有人願意指出來。