如何从一个 c# 项目与另一个 c# 项目进行通信
Posted
技术标签:
【中文标题】如何从一个 c# 项目与另一个 c# 项目进行通信【英文标题】:How do I communicate from one c# project to another c# project 【发布时间】:2019-11-08 02:43:30 【问题描述】:从我的第一个项目中,我勾选了一个复选标记,然后这行代码运行:
if (checkbox1.Checked == true)
File.WriteAllText("C:\\True.txt", "fshfgyusfusd");
然后在我的第二个项目中,当表单加载时,我希望它同步复选标记, 所以这是我的代码:
if (File.Exists("C:\\True.txt"))
checkbox1.Checked = true;
还有另一种更简单的方法吗,或者这是更简单的方法,我基本上想要如果第一个项目复选标记被选中,然后第二个表单加载,并且只有在第一个表单复选标记被选中时才检查复选标记
【问题讨论】:
请提供Minimal, Reproducible Example,以便其他人能够真正看到您的问题的背景并帮助他们帮助您。 有很多方法,但我要做的是将两个项目设置为使用单个数据库(用于检查)。 这能回答你的问题吗? Object Sharing between Applications? 这实际上是最简单的。但也是最糟糕的,您应该考虑 WCF 或 .NET 远程处理或管道。 【参考方案1】:你必须有一些沟通方式。
如果您的两个程序要同时运行,您可以使用套接字,或者可能是互斥体。如果它们没有同时运行,则必须将内容保存到文件或数据库中。可能您的第一个应用程序可以通知第三方(最有可能是 Web 服务),而第二个应用程序可以查询 Web 服务是否发生。
但对于您所描述的异步通信,文件可能是最简单的。
一些建议:
您的应用程序不应写入 C: 驱动器的根目录。他们可能应该坚持使用您的临时文件夹,或您的用户配置文件 (C:\Users\CNTowerGUN
) 下的文件夹,或 C:\ProgramData
下的程序专用文件夹。每个应用都应在继续之前检查该文件夹是否存在。
写入当前时间可能比写入随机字符串更有用。如果您正在调试,这将有所帮助。同样,第二个应用可能希望实际读取文件以检查其内容。
执行写入的应用应警惕由于权限不足或文件正在使用而导致文件无法写入的可能性。
【讨论】:
以上是关于如何从一个 c# 项目与另一个 c# 项目进行通信的主要内容,如果未能解决你的问题,请参考以下文章
Html.listboxfor() 如何捕获更改/添加项目的事件 - Jquery MVC (C#)
如何从 C# 读取 VB.NET 项目中的“app.config”文件