草庐IT

async-process

全部标签

swift - 在 Swift 中使用 Dispatch_Async 更新 UI

在我的代码中,我有一个简单的for循环,它循环100次并嵌套for循环以产生延迟。延迟之后,我正在通过dispatch_async更新UI中的进度View元素。但是,我无法更新UI。有谁知道为什么UI不更新?注意:下面的打印语句用于验证for循环是否正确循环。foriin0.. 最佳答案 三个观察,两个基本的,一个更高级一点:除非循环本身在另一个线程上运行,否则您的循环将无法更新该主线程中的UI。因此,您可以将其分派(dispatch)到某个后台队列。在Swift3中:DispatchQueue.global(qos:.utilit

grand-central-dispatch - 对自己使用 dispatch_async

我在将Objective-C代码移植到Swift时遇到过几次这个问题。假设我有以下代码:dispatch_async(dispatch_get_main_queue()){self.hostViewController?.view.addSubview(self.commandField)}这将导致错误,强调整个dispatch_async调用,提供:Couldnotfindmember'addSubview'我认为这是一个尚未正确实现的错误,因为如果我将addSubview调用放在dispatch_asyncblock之外,项目构建良好。最初我认为它可能与在block中捕获self有

c# - 为什么 async/await 允许从 List 到 IEnumerable 的隐式转换?

我刚刚研究了async/await并发现了一些有趣的东西。看看下面的例子://1)ok-obviouspublicTask>GetAll(){IEnumerabledoctors=newList{newDoctorDto()};returnTask.FromResult(doctors);}//2)ok-obviouspublicasyncTask>GetAll(){IEnumerabledoctors=newList{newDoctorDto()};returnawaitTask.FromResult(doctors);}//3)ok-notsoobviouspublicasyncT

c# - 这怎么可能 : OnPaint processed while in WaitOne

我有一个ManualResetEvent。有一次,我使用WaitOne等待那个事件。令我惊讶的是,我在WaitOne中收到了一个OnPaint事件。这种情况也经常发生。堆栈跟踪看起来像这样:我知道WaitOne会阻塞当前线程,并且在事件触发之前不允许执行任何其他代码。有人能解释一下这里发生了什么吗? 最佳答案 这是设计使然。CLR遵守单线程单元(STA)的契约(Contract)。GUI应用程序的主线程是Windows编程所要求的STA,Main()方法中的[STAThread]属性可确保这一点。STA线程的硬性规则是它必须泵送消息

c# - 在 C# 5 中将 WPF 事件处理程序声明为 'async' 的意义

想象一个WPF代码隐藏事件处理程序:在C#4中,您可以将处理程序声明为:privatevoidOnButtonClick(objectsender,RoutedEventArgse){...}在C#5中,您可以声明一个async处理程序privateasyncvoidOnButtonClick(objectsender,RoutedEventArgse){...}那么WPF用这个做什么呢?搜索了几分钟没有找到任何结果。似乎可以在await语句之后执行UI更新。这是否意味着任务在Dispatcher线程上继续?如果Task引发错误,它会通过WPFDispatcher引发,还是仅通过Tas

c# - RestSharp ASYNC client.ExecuteAsync<T> () 工作示例

谁能帮我修改下面的代码:client.ExecuteAsync(request,response=>{Console.WriteLine(response.Content);});基本上我想使用上面的ExecuteAsync方法但不想打印而是返回response.Content给调用者。有什么简单的方法可以做到这一点吗?我试过了,但没用:publicTExecute(RestRequestrequest)whereT:new(){varclient=newRestClient();client.BaseUrl=BaseUrl;client.Authenticator=newHttpBa

c# - 为什么不使用 async/await 关键字时异步单元测试会失败?

根据thisdiscussion,下面两种方法应该没有区别:publicasyncTaskFoo(){awaitDoSomethingAsync();}publicTaskFoo(){returnDoSomethingAsync();}实际上,对于非常简单的方法来说,不async/await关键字的调用似乎是首选,因为它们可以消除一些开销。然而,这显然并不总是适用于单元测试。MSTest[TestClass]publicclassAsyncTest{[TestMethod]publicasyncTaskTest1(){awaitTask.Delay(0);}[TestMethod]pu

c# - xUnit 和 Moq 不支持 async - await 关键字

我正在尝试探索如何将async和await关键字应用于我的xUnit测试。我正在使用xUnit1.9和AsyncCTP1.3。这是我的测试用例我有一个指定一个异步方法调用的接口(interface)publicinterfaceIDoStuffAsync{TaskAnAsyncMethod(stringvalue);}我有一个使用接口(interface)并调用异步方法的类publicclassUseAnAsyncThing{privatereadonlyIDoStuffAsync_doStuffAsync;publicUseAnAsyncThing(IDoStuffAsyncdoSt

c# - 使用 async/await 的异步 TcpListener 的正确方法

我一直在思考使用异步编程搭建TCP服务器的正确方式是什么。通常我会为每个传入请求生成一个线程,但我想使用ThreadPool的大部分内容,因此当连接空闲时,不会有阻塞的线程。首先,我会创建监听器并开始接受客户端,在本例中,是在控制台应用程序中:staticvoidMain(string[]args){CancellationTokenSourcecancellation=newCancellationTokenSource();varendpoint=newIPEndPoint(IPAddress.Parse("127.0.0.1"),8001);TcpListenerserver=n

c# - Process.Kill() 与 Process.Start ("taskkill",...)

我有一个小型C#安装程序应用程序,我想终止一个进程。使用上有什么优点/区别吗Process[]procs=Process.GetProcessesByName("[taskname]");foreach(Processpinprocs){p.Kill();}对比Process.Start("taskkill","/F/IM[taskname].exe");我在某处读到,使用“taskkill”只能在XP(及更高版本)中使用,那么这会使Process.Kill()成为更安全的选择吗? 最佳答案 p.kill()不会杀死进程树。所以如果