public class MyClass {
public static instance = new MyClass();
private List<int> idList;
}
。
我在两个不同的窗口应用程序中使用此类。像这样MyClass.instance.IdList.Add(1);
我在idList中的所有数据都存储在文件中并从该文件中获取信息。我在一个应用程序中为idList添加值,我在另一个应用程序中获取idList信息。但它没有显示第二个应用程序中的idList内容,它是由第一个应用程序添加的。如何实现这一目标?
答案 0 :(得分:4)
也许Remoting会帮助你。它允许您让其他应用程序通过Internet(或本地网络)访问服务器应用程序中的功能。因此代码在服务器应用程序上执行。 以下是一个示例:http://www.codeproject.com/KB/IP/Net_Remoting.aspx
答案 1 :(得分:4)
以下是在应用程序之间共享数据的几种方法:
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)使用文件系统&amp;收听文件更改通知 [努力:简单]
4)内存映射文件 [努力:简单中等]
答案 2 :(得分:3)
也许您已经意识到这一点,但声明为static的类型对于单个进程(应用程序)是本地的。阅读您的示例,您似乎希望在应用程序之间共享和访问静态实例。事实并非如此。
执行所需操作的标准方法是创建第三个应用程序/进程,该应用程序/进程公开对两个其他应用程序可以添加/删除项目的列表的同步访问。
答案 3 :(得分:0)
如果你要使用.Net 4.0,你可以使用Memory Mapped Files。
答案 4 :(得分:0)
如何使用SQL Server Compact Edition?
答案 5 :(得分:0)
为什么不使用xml作为两个应用程序之间的中介。使用XML进行通信。
答案 6 :(得分:0)
我认为这是Message Queue
的完美候选人使用消息队列,您可以在一个应用程序中将ID添加到队列中,然后在另一个应用程序中将其拉出。
此页面提供了如何实施队列的一个很好的示例:Use Microsoft Message Queuing in C# for inter-process communication
MSDN在此提供示例服务:C#: A Message Queuing Service Application
答案 7 :(得分:0)
Message Queue是最好的沟通方式。 但是,在使用该服务之前,请检查是否需要启用“Microsoft Message Queue”组件。
此外,我们可以获得实时数据交换,因为它也会创建事件,如果配置为这样做。并且FIFO访问消息的方式将使得能够处理每个消息而不会丢失任何单个消息。
答案 8 :(得分:0)
就我而言,我有2个申请
我曾使用 Message Queue 来克服此数据共享问题
使用方法: