[英]Sharing data between two applications
像這樣
public class MyClass {
public static instance = new MyClass();
private List<int> idList;
}
。 我在兩個不同的窗口應用程序中使用此類。 像這樣MyClass.instance.IdList.Add(1);
idList中的所有數據都存儲在文件中並從該文件中獲取信息。 我在一個應用程序中為idList添加值,我在另一個應用程序中獲取idList信息。 但它沒有顯示第二個應用程序中的idList內容,它是由第一個應用程序添加的。 如何實現這一目標?
以下是在應用程序之間共享數據的幾種方法:
WCF將是我的首選方式,我將在此處添加一些解釋
1)使用WCF - 托管具有以下功能的WCF服務[努力:中等]
//注意這里使用Publisher -Subscriber模式(每個應用程序都會訂閱服務,服務可以由某個端點的所有應用程序托管,即net.pipe:// localhost / NotificationService(因為多個應用程序將嘗試托管同樣的服務只有一個會成功,這正是我們想要的)
void Subscribe(object);
void Unsubscribe(object);
//任何想要將對象添加到列表的客戶端都將調用Add
void Add(object objectToAdd);
//遍歷每個訂閱應用並發送列表已更改的通知
void Notify();
//返回列表的當前狀態
IEnumerable<object> GetYourList();
2)剪貼板的使用 [努力:簡單]
3)使用文件系統並監聽文件更改通知 [努力:簡單]
4)內存映射文件 [努力:簡單中等]
也許Remoting會幫助你。 它允許您讓其他應用程序通過Internet(或本地網絡)訪問服務器應用程序中的功能。 因此代碼在服務器應用程序上執行。 這是一個例子: http : //www.codeproject.com/KB/IP/Net_Remoting.aspx
也許您已經意識到這一點,但聲明為static的類型對於單個進程(應用程序)是本地的。 閱讀您的示例,您似乎希望在應用程序之間共享和訪問靜態實例。 不是這種情況。
執行所需操作的標准方法是創建第三個應用程序/進程,該應用程序/進程公開對兩個其他應用程序可以添加/刪除項目的列表的同步訪問。
如果您要使用.Net 4.0,則可以使用內存映射文件 。
如何使用SQL Server Compact Edition?
為什么不使用xml作為兩個應用程序之間的中介。 使用XML進行通信。
我認為這是Message Queue的最佳候選者
使用消息隊列,您可以在一個應用程序中將ID添加到隊列中,然后在另一個應用程序中將其拉出。
此頁面提供了如何實現隊列的一個很好的示例: 在C#中使用Microsoft消息隊列進行進程間通信
MSDN在此提供示例服務: C#:消息隊列服務應用程序
在我的情況下,我有2個申請
我曾使用Message Queue來克服這個數據共享問題
如何使用 :
Message Queue是最好的通信方式。 但是,在使用該服務之前,請檢查是否需要啟用“Microsoft Message Queue”組件。
此外,我們可以獲得實時數據交換,因為它也會創建事件,如果配置為這樣做。 和FIFO訪問消息的方式將使得能夠處理每個消息而不會丟失任何單個消息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.