草庐IT

FIN-WAIT

全部标签

c# - 使 http 客户端同步 : wait for response

我有一些文件要上传,但有些文件失败了,因为发布是异步的而不是同步的。我正在尝试将此调用作为同步调用..我想等待回复。如何使此调用同步?staticasyncTaskUpload(stringkey,stringurl,stringsourceFile,stringtargetFormat){using(HttpClientHandlerhandler=newHttpClientHandler{Credentials=newNetworkCredential(key,"")})using(HttpClientclient=newHttpClient(handler)){varreques

c# - 如果超时没有完成任务,Task.Wait(int) 是否会停止任务?

我有一个任务,我希望它能在一秒钟内运行,但如果它花费的时间超过几秒钟,我想取消该任务。例如:Taskt=newTask(()=>{while(true){Thread.Sleep(500);}});t.Start();t.Wait(3000);请注意,等待3000毫秒后到期。超时过后任务是否被取消或任务是否仍在运行? 最佳答案 Task.Wait()等待任务完成到指定时间段,并返回任务是否在指定时间(或更早)内完成。任务本身不被修改,也不依赖于等待。阅读精彩系列:Parallelismin.NET,Parallelismin.NET

c# - await Task.Delay() 与 Task.Delay().Wait()

在C#中,我有以下两个简单示例:[Test]publicvoidTestWait(){vart=Task.Factory.StartNew(()=>{Console.WriteLine("Start");Task.Delay(5000).Wait();Console.WriteLine("Done");});t.Wait();Console.WriteLine("Alldone");}[Test]publicvoidTestAwait(){vart=Task.Factory.StartNew(async()=>{Console.WriteLine("Start");awaitTask.

C# : Monitor - Wait, 脉冲,PulseAll

我很难理解Wait()、Pulse()、PulseAll()。他们都能避免僵局吗?如果您解释一下如何使用它们,我将不胜感激? 最佳答案 简短版:lock(obj){...}是Monitor.Enter/Monitor.Exit的缩写(带有异常处理等)。如果没有其他人拥有锁,您可以获取它(并运行您的代码)——否则您的线程将被阻塞,直到获得锁(由另一个释放它的线程)。死锁通常发生在A:两个线程以不同的顺序锁定事物:thread1:lock(objA){lock(objB){...}}thread2:lock(objB){lock(obj

c# - .Wait() 和 .GetAwaiter().GetResult() 有什么区别?

我的方法返回Task。我想等到它完成。我应该用什么.Wait()还是.GetAwaiter().GetResult()?它们有什么区别? 最佳答案 两者都是同步等待操作结果(您应该尽可能避免这些)。区别主要在于处理异常。使用Wait时,异常堆栈跟踪不会改变并代表异常发生时的实际堆栈,因此如果您有一段代码在线程池线程上运行,您将拥有像这样堆叠ThreadPoolThread.RunTaskYourCode.SomeWork另一方面,.GetAwaiter().GetResult()将重新处理堆栈跟踪以考虑所有异步上下文,忽略部分代码在

c# - 是否建议将 prevTask.Wait() 与 ContinueWith(来自任务库)一起使用?

所以最近有人告诉我,我将.ContinueWith用于任务的方式并不是使用它们的正确方式。我还没有在互联网上找到这方面的证据,所以我会问你们,看看答案是什么。这是我如何使用.ContinueWith的示例:publicTaskDoSomething(){returnTask.Factory.StartNew(()=>{Console.WriteLine("Step1");}).ContinueWith((prevTask)=>{Console.WriteLine("Step2");}).ContinueWith((prevTask)=>{Console.WriteLine("Step3

c# - 等待 vs Task.Wait - 死锁?

我不太明白Task.Wait和await之间的区别。我在ASP.NETWebAPI服务中有类似于以下功能的东西:publicclassTestController:ApiController{publicstaticasyncTaskFoo(){awaitTask.Delay(1).ConfigureAwait(false);return"";}publicasyncstaticTaskBar(){returnawaitFoo();}publicasyncstaticTaskRos(){returnawaitBar();}//GETapi/testpublicIEnumerableGe

c# - Selenium C# WebDriver : Wait until element is present

我想确保在webdriver开始执行操作之前存在一个元素。我正在尝试让这样的东西工作:WebDriverWaitwait=newWebDriverWait(driver,newTimeSpan(0,0,5));wait.Until(By.Id("login"));我主要是在纠结如何设置匿名函数... 最佳答案 使用solutionprovidedbyMikeKwan可能会对整体测试性能产生影响,因为隐式等待将用于所有FindElement调用。很多时候您会希望FindElement在元素不存在时立即失败(您正在测试格式错误的页面、缺

c# - Task.Start/Wait 和 Async/Await 之间有什么区别?

我可能遗漏了一些东西,但这样做有什么区别:publicvoidMyMethod(){Taskt=Task.Factory.StartNew(DoSomethingThatTakesTime);t.Wait();UpdateLabelToSayItsComplete();}publicasyncvoidMyMethod(){varresult=Task.Factory.StartNew(DoSomethingThatTakesTime);awaitresult;UpdateLabelToSayItsComplete();}privatevoidDoSomethingThatTakesTi

c# - 同步等待一个异步操作,Wait()为什么会在这里卡住程序

前言:我正在寻找一个解释,而不仅仅是一个解决方案。我已经知道解决方案了。尽管我花了几天时间研究有关基于任务的异步模式(TAP)、async和await的MSDN文章,但我仍然对一些更精细的细节感到有点困惑。我正在为Windows应用商店应用程序编写一个记录器,我想同时支持异步和同步日志记录。异步方法遵循TAP,同步方法应隐藏所有这些,并像普通方法一样看起来和工作。这是异步日志的核心方法:privateasyncTaskWriteToLogAsync(stringtext){StorageFolderfolder=ApplicationData.Current.LocalFolder;S