草庐IT

annotation-processing

全部标签

c# - 从 Process.StandardOutput 捕获二进制输出

在C#中(.NET4.0在SuSE上的Mono2.8下运行)我想运行一个外部批处理命令并以二进制形式捕获它的输出。我使用的外部工具称为“samtools”(samtools.sourceforge.net),除其他外,它可以从称为BAM的索引二进制文件格式返回记录。我使用Process.Start来运行外部命令,并且我知道我可以通过重定向Process.StandardOutput来捕获它的输出。问题是,这是一个带有编码的文本流,所以它不允许我访问输出的原始字节。我找到的几乎可行的解决方案是访问底层流。这是我的代码:ProcesscmdProcess=newProcess();Proc

c# - System.Diagnostics.Process UseShellExecute 究竟做了什么?

我有一个MSBuild任务执行(除其他外)对xcopy的调用。我发现,当我从一个批处理文件运行我的MSBuild任务时,对xcopy的调用正确执行,并且无法执行或产生任何输出,这些输出让我知道当从另一个批处理文件调用同一个批处理文件时发生了什么带有System.Diagnostics.Process的C#应用程序。两个进程都以大致相同的结构启动:waitProc.StartInfo.Arguments="/C[executable]";waitProc.StartInfo.FileName="cmd.exe";waitProc.StartInfo.UseShellExecute=fal

c# - 使用 Process.Start 参数和路径中的空格

我见过类似的例子,但找不到与我的问题完全相同的东西。我需要从C#运行这样的命令:C:\FOLDER\folderwithspaces\OTHER_FOLDER\executable.exep1=hardCodedv1p2=v2我在运行时设置v2,所以我需要能够在调用Process.Start之前修改C#中的字符串。有谁知道如何处理这个问题,因为我的参数之间有空格? 最佳答案 即使您使用ProcessStartInfo类,如果您必须为参数添加空格,那么上述答案也无法解决问题。有一个简单的解决方案。只需在参数周围添加引号。就这样。str

c# - 为什么 "View Heap"结果与 Visual Studio 中的 'Process Memory Usage' 不匹配

我正在尝试使用VisualStudio来跟踪我的应用程序中的内存使用情况。在“诊断工具”窗口中,它显示我的应用程序正在使用423MB。谢谢,我转到“内存使用”和“ViewHeap”,当我单击快照时,我会得到一个显示对象大小的表格。但是当我把这些数字加起来时:=3317228+403764+354832+264984+244836+195748+144032+28840+16452+13920+13888+3428+2100+20=5004072=4.77MB我的问题是为什么这个数字4.77MB与我在“内存”图表上看到的423MB不匹配。我希望在左边的表格中看到423MB的去向。请告诉我

c# - 即使进程正在运行,Process.HasExited 也会返回 true?

我一直在观察Process.HasExited有时会返回true,即使进程仍在运行也是如此。我下面的代码启动了一个名为“testprogram.exe”的进程,然后等待它退出。问题是有时我会抛出异常;似乎即使HasExited返回true进程本身在系统中仍然存在-这怎么可能??我的程序在它终止之前写入一个日志文件,因此我需要在读取它之前绝对确定这个日志文件存在(也就是进程已经终止/完成)。持续检查它是否存在不是一种选择。//Createnewprocessobjectprocess=newProcess();//Setupeventhandlersprocess.EnableRaisi

c# - 如何获取 System.Diagnostics.Process 的输出?

我这样运行ffmpeg:System.Diagnostics.Processp=newSystem.Diagnostics.Process();p.StartInfo=newSystem.Diagnostics.ProcessStartInfo(ffmpegPath,myParams);p.Start();p.WaitForExit();...但问题是带有ffmpeg的控制台弹出并立即消失,所以我无法获得任何反馈。我什至不知道进程是否正确运行。那么我怎样才能:告诉控制台保持打开状态在C#控制台中检索什么显示 最佳答案 您需要做的是捕

c# - VS 2017 : The security debugging option is set but it requires the Visual Studio hosting process which is unavailable

我的解决方案(包含十几个项目)在VisualStudio2013中完美运行。在VisualStudio2017中,我可以打开解决方案并进行编译。但如果我开始调试,我会系统地收到此错误消息:ThesecuritydebuggingoptionissetbutitrequirestheVisualStudiohostingprocesswhichisunavailableinthisdebuggingconfiguration.Thesecuritydebuggingoptionwillbedisabled.Thisoptionmaybere-enabledintheSecuritypro

c# - Process.WaitForExit() 异步

我想等待一个进程完成,但是Process.WaitForExit()挂起了我的GUI。是否有基于事件的方式,或者我是否需要生成一个线程来阻塞直到退出,然后自己委托(delegate)事件? 最佳答案 从.NET4.0/C#5开始,使用异步模式表示它会更好。//////Waitsasynchronouslyfortheprocesstoexit.//////Theprocesstowaitforcancellation.///Acancellationtoken.Ifinvoked,thetaskwillreturn///immedi

c# - 即使出现 "in use by another process"异常,如何读取文件?

在VB.NET或C#中,我试图读取另一个程序正在使用的文本文件的内容(这就是重点,实际上,我无法停止该程序或它停止写入文本文件,我想定期读出另一个程序中文本文件中当前的内容)。这是我使用的代码(VB.NET)DimstrContentsAsStringDimobjReaderAsStreamReaderobjReader=NewStreamReader(FullPath)strContents=objReader.ReadToEnd()objReader.Close()或者在C#中:varobjReader=newStreamReader(FullPath);varstrContent

c# - Visual Studio : auto attach to a process when the process is spawned

我想在进程(a.exe)生成后立即附加到它,是否可以使用VS?我只知道进程的名称。实际上我想要完成的是在c#代码中设置一个断点,但该代码属于另一个将由当前运行的应用程序(c.exe)启动的可执行文件。代码在初始化期间,所以我不可能手动进行附加。 最佳答案 当我以前遇到过这种情况(并且我控制了两个过程)时,我发现一个不错的解决方法是调用Debugger.Launch()在产卵过程的入口点。然后VS会弹出一个对话框让你附加到进程。 关于c#-VisualStudio:autoattachto