Visual Basic .NET/程序間通訊
外觀
通常,Windows 中的每個程式都有其自己的虛擬記憶體空間。換句話說,一個程式無法更改另一個程式中的變數。編組是將資料和記憶體地址在應用程式之間傳遞的過程。不同的程式可以通過幾種方式相互通訊。
這是一個“自行解決”方案。兩個應用程式都訪問共享目錄中的檔案,從它們讀取和寫入資料以進行通訊。最簡單的方法是傳送應用程式為每條訊息寫入一個單獨的檔案,接收應用程式在處理完這些檔案後將其刪除。傳送應用程式應以獨佔訪問許可權建立檔案,以便接收應用程式無法訪問半寫入的檔案。還應該有一種機制來重新同步,如果一個或另一個應用程式在對話期間關閉。
這種方法的主要缺點是接收應用程式必須定期輪詢共享目錄(例如,透過使用 Timer 控制元件)。這會產生硬碟/網路流量,並且輪詢間隔會限制對話的響應速度。
這種方法包括重寫 Form 中的 WndProc 方法以接收,以及 PostMessage Win32 API 呼叫以傳送自定義 Windows 訊息。
這種方法的優勢在於它可以輕鬆地適應同一臺計算機上的程式之間的通訊,以及同一網路(甚至跨網際網路)中不同計算機上的程式之間的通訊。它使用 System.Runtime.Remoting 名稱空間,你可以透過專案引用新增它。
這些方法現在不常使用,但如果你試圖與舊應用程式通訊,你可能會遇到它們。
動態資料交換是 Windows 用於程式相互通訊的原始方法。它仍然被 Windows 用於“剪下和貼上”。
物件連結與嵌入
通用物件模型.
- 引用計數
- 透過 IDispatch 進行後期繫結
OLE 自動化
ActiveX EXEs 和 DLLs