草庐IT

async-process

全部标签

c# - 当我必须使用 await 时,为什么要使用 async?

我已经在这个问题上停留了一段时间,并没有真正找到任何有用的解释来解释为什么会这样。如果我有一个async方法,例如:publicasyncTaskMyMethod(){//Somelogicreturntrue;}publicasyncvoidMyMethod2(){varstatus=MyMethod();//Visualstudiogreenlinesthisandrecommendsusingawait}如果我在这里使用await,异步方法有什么意义呢?VS告诉我调用await不会使async无用吗?这不会破坏在不等待任务完成的情况下将任务卸载到线程的目的吗?

c# - async/await 关键字在 .net 4.0 中不可用

我想在C#4.0中使用async/await并且我已经安装了以下包:http://www.nuget.org/packages/Microsoft.Bcl.Async/问题是我没有可用的async/await关键字。我正在使用带有SP1的VS2010。谢谢。 最佳答案 您不会得到比JonSkeet's更好的答案.唯一支持的方法是将VS2012与Microsoft.Bcl.Async一起使用。VS2010很难使用async/await。有一个旧的AsyncCTP包(其中有许多错误从未被修复)充当VS2010的“附加组件”/“部分替换”

c# - 如何正确使用Microsoft.Bcl.Async?

我使用Microsoft.Bcl.Asyncpackage在一个项目中,并且该项目被另一个不使用异步功能的项目引用。现在我在编译解决方案(或仅编译第二个项目)时收到此错误警告:Theprimaryreference"XYZ.dll"couldnotberesolvedbecauseithasanindirectdependencyontheframeworkassembly"System.Runtime,Version=1.5.11.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a"whichcouldnotberesolvedinth

c# - async 和 await 关键字不会导致创建额外的线程?

我很困惑。一个或多个Task如何在单个线程上并行运行?我对并行的理解显然是错误的。我无法理解MSDN的一些内容:Theasyncandawaitkeywordsdon'tcauseadditionalthreadstobecreated.Asyncmethodsdon'trequiremultithreadingbecauseanasyncmethoddoesn'trunonitsownthread.Themethodrunsonthecurrentsynchronizationcontextandusestimeonthethreadonlywhenthemethodisactive

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

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

c# - 递归和 await/async 关键字

我对await关键字的工作原理不太了解,我想扩展一下我对它的理解。仍然让我头晕的问题是递归的使用。这是一个例子:usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;namespaceTestingAwaitOverflow{classProgram{staticvoidMain(string[]args){vartask=TestAsync(0);System.Threading.Thread.Sleep(100000);}st

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# - Winforms调用async方法挂掉程序

我已经解决这个问题一段时间了,但现在我真的很想知道哪里出了问题。我有一个相当简单的应用程序(它是一个用于youtrack的turtoiseSVN插件,但我可以使用一个简单的winforms应用程序重现该问题)。我有一个异步方法ResolveIssuepublicasyncTaskResolveIssue(Issueissue,intrevision,string[]pathList){awaitTask.Delay(1000);returntrue;}要创建死锁,我要做的就是在Button事件处理程序中调用此异步方法,然后调用Task.Wait或Task.Result,像这样priva

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#控制台中检索什么显示 最佳答案 您需要做的是捕