草庐IT

【JavaEE】进程和线程

全部标签

Windows:WAITING进程完成

我必须制作一个简短的Windowsshell脚本。请不要逃跑。它再简单不过了,但我就是找不到让这个非常原始的命令行与我一起工作的方法。我只是想运行dxdiag,并对收集到的数据做一些事情。问题是,我无法让脚本等待dxdiag完成,因为它会生成进程并继续运行。在继续下一行之前,我需要文件存在并获得信息。使用start/wait没有效果,我猜是因为没有涉及GUI。我开始认为这是不可能的。请帮忙! 最佳答案 我试过这样的东西start/waitdxdiag/x:SomeXmlFile它在WindowsVista中对我有用。

windows - 是否可以将终止进程所需的所有信息保存到磁盘,然后重新启动它?

我正在考虑VM的工作方式,但在常规Windows操作系统进程的级别。我的想法是,如果我可以拍摄快照并卸载进程,我就永远不必因为用完RAM而退出另一个应用程序。 最佳答案 这在任何常见操作系统中都不实用。 关于windows-是否可以将终止进程所需的所有信息保存到磁盘,然后重新启动它?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/6317127/

c# - 我的线程在就绪队列中吗?

我需要记录特定线程在就绪队列中的时间和时间。我想知道是否有一种编程方式可以用C#来做到这一点。如果您需要更多信息,请告诉我...提前致谢,罗腾瓦隆。 最佳答案 您可以检查Thread对象的ThreadState属性。在此处查看可能的值:http://msdn.microsoft.com/en-us/library/system.threading.threadstate.aspxWaitSleepJoin表示它正在等待某事,Running表示据我所知它在“就绪队列”中。希望对您有所帮助。

windows - Windows 中允许线程等待直到另一个线程解除阻塞的正确线程同步对象是什么?

我有一个在Windows下运行的Delphi应用程序需要阻塞,直到另一个线程已传送数据。换句话说,我需要等待来自特定线程的同步对象,我可以将其置于非信号状态,就好像另一个线程拥有该对象的所有权一样,这样当我调用WaitFor()线程阻塞,直到其他线程之一解除它的阻塞(有多个潜在的线程可以解除并且事先不知道是哪一个)。请注意,所有线程都可以访问共享数据区域,因此访问公共(public)同步对象不是问题。我认为Events是正确的选择,直到我读到RaymondChen这篇关于PulseEvent()问题的令人不安的博文:http://blogs.msdn.com/b/oldnewthing

c - 我怎样才能在 C 中获得一个进程句柄而不是它的名字?

我正在WindowsXP上编写程序,试图获取calc.exe的进程句柄。我可以假设用户确实运行了calc.exe,但他可能更改了文件名。即使名称已更改,是否有一个名称可以获取calc.exe进程的句柄?我找到了这个答案,但它不处理顽皮用户更改名称(例如更改为calc_new.exe)的情况:HowcanIgetaprocesshandlebyitsnameinC++?我可以使用Win32进程的一些其他属性来查找句柄吗? 最佳答案 您可以使用以下Win32API调用序列执行此操作:使用Spy++或类似工具找到您定位的顶级窗口的类名。调

windows - 将已执行进程的输出定向到当前 cmd

我能否以将执行程序的输出写入当前控制台的方式从JScript脚本执行程序?目前我正在使用Shell.Application.ShellExecute,它正在为已执行的应用程序打开另一个新控制台。在我的例子中,JScript是一个编译器的包装器,它由ShellExecute执行。所以发生的是所有编译器错误都丢失了,因为它们被打印在另一个控制台中。 最佳答案 如果您只担心捕获编译器输出,那么您可以将输出重定向到一个文件(我建议同时使用stdout和stderr)。像这样:varshell=newActiveXObject("WScrip

c# - 访问 SQL CE 数据库的线程安全方式

背景:在我的WindowsPhone项目中。我使用本地SQLCE数据库来存储日期。使用LINQtoSQL以编程方式创建数据库表。这个数据库是通过几个线程中的各种数据上下文实例访问的。问题是:我为我的应用程序的用户提供了一个选项来清除所有数据并注销。当用户选择它时,我使用数据上下文的DeleteDatabase方法删除数据库。但是,我总是收到数据库正在被另一个进程使用的错误,因此无法删除。任何朝着正确方向的插入都会让我开心。 最佳答案 Andy如上所述(老实说他们打败了我)问题是在另一个进程仍然打开连接时访问数据库。基本上可以通过将针

c++ - 将指向局部变量的指针传递给另一个进程有时有效,但有时无效

前阵子我写了一个程序,可以让你选择和修改窗口。它使用WindowFromPoint()获取鼠标光标下窗口的句柄,并调用GetWindowText()获取窗口的标题。这很好用。然后我添加了获取列表控件列标题的功能。问题在于,与返回宽度的GetColumnWidth()不同,没有相应的函数来获取标题。相反,获取列标题的标题需要将缓冲区传递给GetColumn()以填充标题。因此,当我将LVCOLUMN结构的pszText成员分配给指向缓冲区的指针并将该结构传递给GetColumn()时,其他进程将指针解释为在其自己的内存空间内。显然这是行不通的。我使用CodeProjectarticle中

c# - 锁定文件同时保留在同一线程中读取/追加/写入/截断的能力?

我有一个文件,粗略地说,包含应用程序的状态。我想实现以下行为:当应用程序启动时,锁定文件,以便其他应用程序(或用户本身)无法修改它;从文件中读取之前的应用状态;...做工作...用新状态更新文件(给定文件格式,涉及重写整个文件;操作后文件的长度可能会减少);...做工作...再次更新文件...做工作...如果工作失败(应用程序崩溃),则解除锁定,文件内容保留为执行前一个工作单元后的内容。看来,要重写文件,应该使用Truncate选项打开它;这意味着每次他们想要重写文件时都应该打开一个新的FileStream。所以看起来我想要的行为只能通过这种肮脏的方式来实现:当应用程序启动时,读取文件

c++ - 是否可以在一个线程遇到异常时卡住所有线程

我能够打印在运行时捕获异常的线程的堆栈跟踪。我还需要打印在同一进程中运行的其他线程的踪迹。我有兴趣找到一种在一个线程中捕获异常后立即卡住所有线程的好方法。现在,我所能做的就是查询每个事件线程,然后在其上执行SuspendThread()。但是,这将导致每个线程在捕获到初始异常后执行的时间更长一些。有没有办法立即让每个线程挂起?谢谢。 最佳答案 您是否尝试从捕获异常的工作线程使用PostMessage()到GUI线程?建议的简要步骤:1)GUI线程生成少量工作线程2)工作线程PostMessage()一旦捕获到异常3)GUI线程接收消