相关疑难解决方法(0)

STAThread和多线程

来自有关STAThread的MSDN文章:

表示应用程序的COM线程模型是单线程单元(STA).

(作为参考,这是整篇文章.)

单线程公寓......好吧,我的头脑.另外,我在某处读到,除非你的应用程序使用COM互操作,否则这个属性实际上什么都不做.那究竟它究竟做了什么,以及它如何影响多线程应用程序?多线程应用程序(包括使用Timers到异步方法调用的任何人,而不仅仅是线程池等)都应该使用MTAThread,即使它"只是为了安全"?STAThread和MTAThread实际上做了什么?

.net c# multithreading sta

102
推荐指数
1
解决办法
8万
查看次数

Process.Start在某些客户端上随机阻塞/挂起

(有一个非常相似的话题从未得到解决:这里)

我们在几个客户端上运行了一个大应用程序,但最近我的一些代码停止了工作.添加一些调试代码,我发现代码停止在()调用的Process.Start(没有的ShellExecute = true设置).

电话很简单

 Process.Start(new ProcessStartInfo("program"))    
Run Code Online (Sandbox Code Playgroud)

在BackgroundWorker线程中.

"程序"应用程序会执行它应该执行的操作并退出.

我们的应用程序继续,因为线程在后台,但如果应用程序在GUI线程上运行另一个Process.Start,则应用程序会锁定.如果使用X按钮关闭应用程序,则应用程序仍显示在taskmanager中,因为该线程仍被Process.Start阻止.

问题是这种行为无法再现.它在一些客户端计算机上随机发生.

使Process.Start()挂起会发生什么?(Program.Main标有[STAThread])

我目前刚刚做了一个解决方法,在自己的线程中启动Process.Start(),如果它还没有返回,则在5秒后终止它.但是对于等待代码返回的用户来说这是5秒钟(我不知道我可以设置超时有多低,因为在某些情况下我需要Process.Start()的返回值).

可以有防病毒软件干扰吗?(客户端安装了Symantec AV)

更新:我假设当我做了一个

ProcessStartInfo psi = new ProcessStartInfo("ping", "localhost");
Run Code Online (Sandbox Code Playgroud)

默认情况下psi.UseShellExecute为FALSE ...这是不正确的.它默认为TRUE.这是正常的吗?

c# blocking process.start

7
推荐指数
1
解决办法
4888
查看次数

标签 统计

c# ×2

.net ×1

blocking ×1

multithreading ×1

process.start ×1

sta ×1