草庐IT

【JavaEE】进程和线程

全部标签

c# - 线程还是非线程

我正在构建一个相当简单的应用程序,它执行几个单独的HTTPWebRequests,每个都有自己的计时器。我不太可能需要同时运行3个以上的单独请求。如果一个TimerTick在另一个HTTPWebRequest正在进行时触发,那么TimerTick触发的事件会发生什么?我应该添加线程吗? 最佳答案 答案几乎总是——不,不要仅仅因为可以就使用线程。考虑先进行异步调用,因为这样更容易编写正确的代码。如果您需要额外的参数,它可能会更有效地使用资源(因为线程不是无限的资源)。链接:HowtouseHttpWebRequest(.NET)asy

c# - 如何判断进程是否具有图形界面?

我正在使用自动化来测试应用程序,但有时我想通过批处理文件启动应用程序。当我运行“process.WaitForInputIdle(100)”时出现错误:“WaitForInputIdle失败。这可能是因为进程没有图形界面。”如何判断进程是否有图形界面? 最佳答案 参见Environment.UserInteractive.这将确定进程是否有接口(interface),例如服务不是用户交互的。您还可以查看Process.MainWindowHandle它会告诉你是否有图形界面。这两项检查的组合应涵盖所有可能性。

c# - 是否将线程设置为背景

我需要解释一下我在这个网站上得到的一些建议。我正在做一个时事通讯发送应用程序,我的邮件在一个单独的线程中发送,所以这个过程不会减慢整个网站的速度。一些人建议我将线程的IsBackground属性设置为true。我这样做了,但也很好奇它的作用,所以我用谷歌搜索了一下。事实证明,将IsBackground属性设置为true表示“如果在该线程仍在运行时进程关闭是可以的。”。或者正如微软所说,“任何剩余的后台线程都已停止且未完成。”我不知道我是不是理解错了,但是,将IsBackground属性保留为false不是更好,这样生成的线程就可以完成与主线程有关的工作吗?

c# - 为什么 SocketAsyncEventArgs 的 Completed 回调经常在新创建的线程中执行,而不是使用有界线程池?

我有一个简单的客户端应用程序,它以低吞吐量从网络接收字节缓冲区。这是代码:privatestaticreadonlyHashSet_capturedThreadIds=newHashSet();privatestaticvoidRunClient(Socketsocket){vare=newSocketAsyncEventArgs();e.SetBuffer(newbyte[10000],0,10000);e.Completed+=SocketAsyncEventsArgsCompleted;Receive(socket,e);}privatestaticvoidReceive(Soc

c# - 为什么跨线程以这种方式工作?

已解决看来Oliver是对的。经过几次尝试,我得到了异常,并且在Debug模式下我肯定得到了它。所以这一切都与时间有关。您还应该查看Matthewwattsons的回答;)例子首先,一个小例子可以解释我的困惑。usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Linq;usingSystem.Text;usingSystem.Windows.Forms;usingSystem.Threading;n

c# - Regfree COM 事件从其他线程失败

我有一个COM可见.NET类,它公开事件并从VB6中使用。在过去的几天里,我一直试图让它与regfreeCOM一起工作,但没有成功。当从原始线程触发事件时,VB6事件以regfree模式运行。VB6事件在注册类型库时从另一个线程触发时运行。(regasm/tlb/codebase后跟regasm/codebase/unregister,后者不会注销tlb)当在regfree模式下从另一个线程触发时,它会抛出异常,因此永远不会执行VB6事件代码。System.Reflection.TargetException:Objectdoesnotmatchtargettype.atSystem.

c# - 多线程应用程序中无锁的延迟加载

如果两个线程同时读取这个属性会怎样?publicstaticHugeTypeHugeType{get{if(tenderCache==null){tenderCache=Config.Get("HugeType",null);}returntenderCache;}}我的对象是只读的,如果创建两个实例并不重要。在任何情况下我都应该加锁吗? 最佳答案 因为没有同步,初始化方法可能会被调用很多次,即使其他线程已经完全完成初始化(由于缺少内存屏障)也可能如此。如果您不关心多次执行初始化操作并且无论调用多少次它总是返回相同的正确值,即使同时

c# - 为什么这个赋值不是线程安全的?

我一直在阅读JosephAlbahari关于线程的这本书:http://www.albahari.com/threading/在第2部分中,我找到了这个示例:http://www.albahari.com/threading/part2.aspx#_When_to_Lock这是前面提到的例子:classThreadUnsafe{staticint_x;staticvoidIncrement(){_x++;}staticvoidAssign(){_x=123;}}线程安全版本:classThreadSafe{staticreadonlyobject_locker=newobject();

C# 到 C++ 进程,WM_COPYDATA 传递带有字符串的结构

在c#程序中,我想使用WM_COPYDATA和SendMessage来与遗留的c++/cliMFC应用程序通信。我想传递一个包含字符串对象的托管结构。我可以找到与SendMessage一起使用的c++应用程序的句柄。我不知道的一点是如何在另一端编码和读取结构及其字符串。特别是因为它包含非blittables。大家觉得这可行吗?我会继续努力,但会感谢做过此类事情的人告诉我它是否行不通。这里有一些演示代码,如果它是一个c++/cli程序,它不难运行。但是,我希望它位于.Net类库中,以便可以轻松地重复使用。//Quickdemonstationcodeonly,notcorrectlyst

c# - 终止进程(Windows 8)问题

我大约一个月前安装了Windows8,但一直遇到进程挂起时我无法结束/终止它的问题。任务管理器和CMDTaskkill/f/PID####都不能完成这项工作,所以我想我会用C#编写自己的进程killer,看看会出现什么问题。在编写了一个小应用程序后,我意识到我并不像我想象的那么聪明——我仍然无法结束这个过程。起初我能够通过名称/PID找到进程:Processp=Process.GetProcessById(aPid)//orforeach(ProcesspinProcess.GetProcessesByName(aProcessName)..当我尝试以下操作时出现“访问被拒绝”异常:p