看板 C_Sharp 關於我們 聯絡資訊
各位好,小弟最近在研究有關動態載入dll的問題, 首先,我有四個專案分別是DllImport,MessageBox1,MessageBox2,MessageBox3 DllImport是主程式(exe),其餘三個分別是form, 其功能是按下按鈕會跳出一個MessageBox視窗 這三個MessageBox compile成dll後,為了使用動態載入,我就沒有加入reference 是用以下程式碼動態載入: private void button1_Click(object sender, EventArgs e) { Assembly ass = Assembly.LoadFrom(@"D:\project\DynamicDll\MessageBox1\bin\Debug\MessageBox1.dll"); //利用dll的路徑加載 Type type = ass.GetType("MessageBox1.test1"); Object obj = Activator.CreateInstance(type, null); Form f = (Form)obj; f.Show(); } 而我這個主程式的內容是按下button1,會動態的使用MessageBox1.dll, 這方面沒問題,在f.show()時會順利產生MessageBox1的畫面,此畫面 為一個Form,上面有一個按鈕,按下去會出現一個訊息視窗 問題來了,如果當我一直按DllImport主程式的按鈕,就會一直出現MessageBox1的畫面 我想等MessageBox1的form被關閉了,按下DllImport的按鈕才會有效,就是有點 singleton的概念,我的想法是用個變數去紀錄MessageBox1的form何時被關閉 然後通知DllImport主程式,但我不知道exe與dll之間怎麼傳遞變數 還是這種問題有別種做法,可以請有經驗的高手給我點意見嗎?? 謝謝各位了!!!! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 203.70.143.133
EricTsai:一樣Reflection啊 10/07 22:41
followaymis:樓上,可以說詳細一點嗎? 10/07 23:20