我有一个将要保存信息的类:Id,Name等。这是用C#编写的类库的一部分。
2个应用程序都有对库(DLL)的项目引用。
这两个应用都是独立的可执行文件。
App1最初会设置信息(Id,Name等)
我希望App2能够访问设置为App1的值。
我已经尝试使库类静态和非静态但仍然无法让App2“看到”App1设置的值。我意识到我可以序列化数据,并尽可能避免这样做。
答案 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