草庐IT

async-process

全部标签

c# - Process.Kill() 访问被拒绝

当我运行以下代码时,会抛出Win32Exception以拒绝访问。我无法通过搜索找到任何解决方案。我该如何解决这个问题?foreach(ListViewItemlistinshowprocesses.SelectedItems){Processp=System.Diagnostics.Process.GetProcessById(Convert.ToInt32(list.Tag));if(p!=null)p.Kill();} 最佳答案 如果您没有必要的权限,通常会收到此错误。您必须是管理员,并且在winvista及更高版本中,以提升

c# - ThreadPool 服务器的 async/await 等价物是什么?

我正在使用同步api和线程池在看起来像这样的tcp服务器上工作:TcpListenerlistener;voidServe(){while(true){varclient=listener.AcceptTcpClient();ThreadPool.QueueUserWorkItem(this.HandleConnection,client);//OralternativelynewThread(HandleConnection).Start(client)}}假设我的目标是以最低的资源使用率处理尽可能多的并发连接,这似乎很快就会受到可用线程数的限制。我怀疑通过使用非阻塞任务api,我将

c# - 将 Microsoft.Bcl.Async 与代码分析一起使用会导致错误

我正在尝试使用Microsoft.Bcl.Async和代码分析,但是当我运行代码分析时,出现一个或多个错误。我正在使用带有更新2的VisualStudio2012。这对我来说很容易重现:创建一个针对.Net4的新默认控制台应用程序。右键单击References,然后选择ManageNuGetPackages...单击Online并在SearchOnline框中键入async。您应该看到Asyncfor.NetFramework4...。点击安装并接受所有问题。向Main()添加一行内容:TaskEx.Delay(1000);和usingSystem.Threading.Tasks;转到

c# - C# (async ctp/.net 4.5) 中的异步递归是否安全?

在带有asyncctp或vs.net2011beta的C#中,我们可以像这样编写递归代码:publicasyncvoidAwaitSocket(){varsocket=awaitthis.AcceptSocketAsync();//awaitsocketand>>return在这个特定的示例中,代码异步等待一个tcp套接字,一旦它被接受,它将递归并异步等待另一个套接字。这似乎工作正常,因为await部分将使代码返回给调用者,因此不会导致堆栈溢出。这里有两个问题:如果我们忽略我们正在处理此示例中的套接字这一事实。以这种方式进行无栈递归可以吗?还是我缺少缺点?从IO的角度来看,上述代码是否

c# - 在 ASP.NET Core Process 中创建的子进程在退出时被杀死

我正在使用Process类在ASP.NETCore(.NETFramework)中生成一个子进程:varprocess=newProcess{StartInfo=newProcessStartInfo(executableDir){Arguments=commandDefinition.CommandDef.ArgumentsAsString,RedirectStandardOutput=true,RedirectStandardError=true,UseShellExecute=false,CreateNoWindow=true,WorkingDirectory=_contentP

c# - 如何在 .NET 4.0 中使用 Microsoft.Bcl.Async 支持 TransactionScope 中的异步方法?

这个问题在这里已经有了答案:GetTransactionScopetoworkwithasync/await(4个答案)关闭2年前。我有一个类似的方法:publicasyncTaskSaveItemsAsync(IEnumerableitems){using(varts=newTransactionScope()){foreach(variteminitems){await_repository.SaveItemAsync(item);}await_repository.DoSomethingElse();ts.Complete();}}这当然有问题,因为TransactionScop

c# - 为什么 Enumerator.MoveNext 在与 using 和 async-await 一起使用时不能像我预期的那样工作?

我想通过一个List来枚举并调用异步方法。如果我这样做:publicasyncTaskNotWorking(){varlist=newList{1,2,3};using(varenumerator=list.GetEnumerator()){Trace.WriteLine(enumerator.MoveNext());Trace.WriteLine(enumerator.Current);awaitTask.Delay(100);}}结果是:True0但我希望它是:True1如果我删除using或awaitTask.Delay(100):publicvoidWorking1(){var

c# - 当我使用 "await" "async"方法时,它会变成同步的吗?

场景是这样的:staticasyncvoidMain(string[]args){awaitAnAsyncMethod();}privatestaticasynctaskAnAsyncMethod(){varx=awaitsomeAsyncMethod();vary=awaitsomeOtherAsyncMethod();returnx==y;}“someAsyncMethod”和“someOtherAsyncMethod”是因为我们使用await而同步运行,还是它们都按照执行顺序异步运行?更新鉴于下面的答案表明等待的异步方法将按顺序运行,如果我们只是要停止执行并等待这些方法的返回值,

c# - Process.start() 启动的进程返回错误的进程 ID?

我正在使用这段代码启动一个可执行文件:Processproc=newProcess();proc.StartInfo.FileName=executablePath;proc.Start();proc.WaitForInputIdle();在调用proc.Id之后,它给了我一些整数,这不是真正的进程ID。在任务管理器中,此进程有另一个ID,而且我正在使用MSUIAutomation访问此应用程序,它也返回与任务管理器中相同的ID。所以我的问题是如何获得启动进程的真实进程ID?更新我发现它在Windows7上运行良好并返回正确的ID,但在WindowsXP上却不行。可能是什么原因?场景应

c# - 在 Task.Run 中使用 async/await 在 WinForms 上访问 UI 控件

我在具有一个按钮和一个标签的WinForms应用程序中有以下代码:usingSystem;usingSystem.IO;usingSystem.Threading.Tasks;usingSystem.Windows.Forms;namespaceWindowsFormsApplication1{publicpartialclassForm1:Form{publicForm1(){InitializeComponent();}privateasyncvoidbutton1_Click(objectsender,EventArgse){awaitRun();}privateasyncTas