如何在不同的可执行文件之间共享或保存数据?

时间:2014-06-04 20:54:39

标签: c#

我有一个将要保存信息的类:Id,Name等。这是用C#编写的类库的一部分。

2个应用程序都有对库(DLL)的项目引用。

这两个应用都是独立的可执行文件。

App1最初会设置信息(Id,Name等)

我希望App2能够访问设置为App1的值。

我已经尝试使库类静态和非静态但仍然无法让App2“看到”App1设置的值。我意识到我可以序列化数据,并尽可能避免这样做。

4 个答案:

答案 0 :(得分:0)

如果它们是共享DLL,那么您无法达到App1设置的值。因为共享DLL由每个应用程序管理不同。你不能跳出来直接从其他应用程序的DLL文件中获取值。

同时查看以下答案:IPC in C#, sending text from one exe to another exe

答案 1 :(得分:0)

可执行文件是一个独立的实体。当你运行它有它自己的进程和内存空间。您无法访问其他进程的内存。

如果要使用某个其他进程B在进程A中保存的值,则必须使用某些实时连接技术连接这两个进程(例如,在一个可执行文件上托管WCF服务并从另一个可执行文件调用)或者有一些中间对象(例如将序列化对象保存到文件中并在不同的进程中打开)。

答案 2 :(得分:0)

您无法访问"相同"共享DLL的字段/属性,即使这些类是静态的,因为......好吧,很多原因。应用程序可能引用相同的DLL,但它们仍然拥有自己的类实例。

最简单的方法是暂时保留信息(XML,您自己制作的格式......)或序列化保存数据的实例,然后在另一个应用程序中反序列化。

如果您仍然不相信,那么我将指出您关于在不同Windows应用程序之间发送和接收消息的Microsoft示例(VB.NET)

http://support.microsoft.com/kb/176058

我自己使用过这种方法,对于简单的情况它非常好用。

快乐的编码。

答案 3 :(得分:-1)

两个不同的应用程序,所以它的两个不同的进程(不是线程!) 最简单的方法是使用WCF或Remoting,例如:http://www.codeguru.com/csharp/csharp/cs_syntax/remoting/article.php/c9251/NET-Remoting-Using-a-New-IPC-Channel.htm