調用dll時的問題

很長時間沒有整理做過的東西了,今天由於另一個問題,用到了以前program中的一點東西,一點兒印象也沒有

感覺再不總結下,以後還是會忘,所以今兒總結下:

問題一:調用dll後出現的問題,


public void ReWork(string jimi)
        {
            try
            {
                FormCollection ftd = Application.OpenForms;
                IEnumerator id = ftd.GetEnumerator();
                while (id.MoveNext())
                {
                    string a = id.Current.ToString().Substring(0, id.Current.ToString().IndexOf('.'));
                    if (a == GetType().Namespace)
                    {
                        ((Form)id.Current).Close();
                        ((Form)id.Current).Dispose();
                        id = ftd.GetEnumerator();
                    }
                    if (ftd.Count == 1)
                        break;
                }
                this.StartDll(jimi);
                this.ReSetPoint();
            }
            catch (Exception ee)
            {
                MessageBox.Show(ee.Message);
            }
        }


 

本身對FormCollection和IEnumerator不是很熟悉,FormCollection本身是一個集合,從Application中我們得到當前獲取打開的所有窗體。

然後通過FormCollection對象的GetEnumeration方法,得到FormCollection實例的枚舉數。

已知這裏id一定不爲空,然後通過迭代執行while循環,在循環體內,判斷一下當前項目的命名空間,現在運行的項目和調用的Dll項目名稱當然是不同的,不同的話再判斷下當前項目的窗體數目,由於已知本項目中只有一個窗體,所以會跳出循環,接着再次會實例化窗體。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章