Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 当一个项目在另一个线程中启动时,如何从另一个项目访问另一个项目_C#_Multithreading_Project Management - Fatal编程技术网

C# 当一个项目在另一个线程中启动时,如何从另一个项目访问另一个项目

C# 当一个项目在另一个线程中启动时,如何从另一个项目访问另一个项目,c#,multithreading,project-management,C#,Multithreading,Project Management,大纲: 我有两个项目。一个项目是主要的,用于GUI和信息的主要处理。第二个项目是第一个项目的次要项目,在一段时间内完成任务 启动二级项目: Thread thread = new Thread(() => { main.MainForm = new MainForm(); main.MainForm.FormClosed += new FormClosedEventHandler(MainForm_FormClosed); main.MainForm.ShowMainForm(); App

大纲: 我有两个项目。一个项目是主要的,用于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中执行管道操作

如何:使用匿名管道进行本地进程间通信

匿名PipeServerStream类

匿名PipeClientStream类


这里有一个很好的例子:

Reference不起作用,因为使用Reference时,您实际上只引用当前的可执行程序集(app1),无法访问另一个进程(app2)。您应该了解进程间通信“有点问题”不是问题描述!问题描述是:“我想知道是否有办法管理我的代码,特别是通过某种简单的事件系统来管理进度和错误?”。Aleksander Toplek回答了我的问题。附言:我没有错误,我的辅助应用程序是完全独立的,我只需要它来报告错误和进度。多亏了Aleksander Toplek,它现在工作得很好。谢谢你,冠军!