大纲:我有两个项目。一个项目是Primary,主要用于GUI和信息的主要处理。第二个项目是第一个项目的次要项目,并在一段时间内完成任务。
启动二级项目:
Thread thread = new Thread(() =>
{
main.MainForm = new MainForm();
main.MainForm.FormClosed += new FormClosedEventHandler(MainForm_FormClosed);
main.MainForm.ShowMainForm();
Application.Run();
});
thread.SetApartmentState(ApartmentState.MTA);
thread.Start();
参考资料:我在主项目中添加了对第二项目的参考,以便可以访问它。
我的问题:我需要一种方法来报告进度以及任何可能引起主项目的问题。当我在另一个线程中启动次要项目时,我似乎失去了很多对次要项目的访问权限。
我试图参考:
main.MainForm...
这似乎有点问题。
我想知道是否可以通过某种简单的事件系统来管理我的代码,特别是进度和错误?
在这种情况下,有关最佳做法的任何帮助和/或想法将不胜感激。
该答案属于:Aleksandar Toplek-参见上面的说明。
•匿名管道。
匿名管道在本地计算机上提供进程间通信。匿名管道比命名管道所需的开销更少,但提供的服务有限。匿名管道是单向的,不能在网络上使用。它们仅支持单个服务器实例。匿名管道对于线程之间或父子进程之间的通信很有用,在创建子进程时,可以轻松将管道句柄传递给子进程。
•命名管道。
命名管道在管道服务器和一个或多个管道客户端之间提供进程间通信。命名管道可以是单向或双工的。它们支持基于消息的通信,并允许多个客户端使用相同的管道名称同时连接到服务器进程。命名管道还支持模拟,该模拟使连接进程可以在远程服务器上使用其自己的权限。
.NET Framework中的管道操作
http://msdn.microsoft.com/zh-CN/library/bb762927(v=vs.110).aspx
如何:使用匿名管道进行本地进程间通信
http://msdn.microsoft.com/en-us/library/bb546102.aspx
AnonymousPipeServerStream类
http://msdn.microsoft.com/zh-cn/library/system.io.pipes.anonymouspipeserverstream(v=vs.110).aspx
AnonymousPipeClientStream类
http://msdn.microsoft.com/zh-cn/library/system.io.pipes.anonymouspipeclientstream(v=vs.110).aspx
一个出色的例子在这里:C#异步命名管道
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句