task_completion_source
全部标签 换句话说,就是vartask=SomeLongRunningOperationAsync();task.Wait();功能相同SomeLongRunningOperation();换句话说,就是vartask=SomeOtherLongRunningOperationAsync();varresult=task.Result;功能相同varresult=SomeOtherLongRunningOperation();根据Task.WaitandInlining,如果正在等待Wait的任务已经开始执行,则Wait必须阻塞。然而,如果它还没有开始执行,Wait可能能够将目标任务从它排队的调
我有一个做两件事的TPL任务。首先,它调用网络服务。其次,它将一些数据插入数据库。我有多达20个任务同时开始,一遍又一遍地做同样的事情。他们整天所做的就是调用Web服务并将数据插入数据库。我对.NET中的TPL还很陌生。我已经完成了一些有关后台工作进程和异步Web服务的工作。Web服务调用和数据库插入都是任务运行线程内的阻塞调用。我知道在幕后,当您使用Tasks时,.NET会为您管理一个线程池。是吗?如果我使用async和await()进行服务调用和数据库调用而不是使它们阻塞调用,线程池是否会有更多线程供其使用?我的理论(我不确定我为什么这么认为)是线程在等待阻塞的Web服务时正忙于无
我正在尝试对返回任务的方法进行单元测试>:voidMain(){varmockRepo=newMock();mockRepo.Setup(x=>x.GetAll()).Returns(newList(){newMyModel{Name="Test"}});//worksmockRepo.Setup(x=>x.GetAllAsync()).Returns(Task.FromResult(newList(){newMyModel{Name="Test"}}));//errorvarresult=mockRepo.Object.GetAll();result.Dump();}publicin
我很困惑,为什么Task.Delay().Wait()需要4倍的时间,然后是Thread.Sleep()?例如task-00是否在仅线程9上运行并花费了2193毫秒?我知道,同步等待在任务中很糟糕,因为整个线程都被阻塞了。仅供测试。控制台应用程序中的简单测试:boolflag=true;varsw=Stopwatch.StartNew();for(inti=0;i{Console.WriteLine($"task-{cntr.ToString("00")}\tThrID:{Thread.CurrentThread.ManagedThreadId.ToString("00")},\tWa
我有多个任务返回我想使用Task.WhenAll(new[]{t1,t2,t3});调用的相同对象类型并阅读结果。当我尝试使用Task>all=awaitTask.WhenAll(newTask[]{t,t2}).ConfigureAwait(false);编译错误Cannotimplicitlyconverttype'void'to'System.Threading.Tasks.Task>两个任务都在调用类似于this的方法。privateTask>GetFiles(stringpath){files=newList();returnTask.Run(()=>{//removefor
在使用来自TcpClient的标准BeginRead和EndRead方法以及使用Task.Factory.FromAsync时,我有非常相似的代码。这里有一些例子..错误处理代码没有显示。Task.Factory.FromAsync:privatevoidRead(Statestate){Taskread=Task.Factory.FromAsync(state.Stream.BeginRead,state.Stream.EndRead,state.Bytes,state.BytesRead,state.Bytes.Length-state.BytesRead,state,TaskCr
在下面的示例中,使用了两个await调用。为了获得性能,样本被转换为Task.WaitAll()(实际上并没有更快,但这只是一个例子)。这是在Android上使用Sqlite.Net的库中的代码,该方法是从主UI线程上的OnResume()调用的:publicasyncTaskSetupDatabaseAsync(){awaitCreateTableAsync();awaitCreateTableAsync();}这是替代方案:publicvoidSetupDatabaseAsync(){vart1=CreateTableAsync();vart2=CreateTableAsync()
有人知道使用ProtoBuf-Net在紧凑框架和完整.Net框架之间进行序列化/反序列化时有任何问题吗?我有一个名为LogData的类,我正在compactframework3.5下序列化,传输到服务器(运行.Netframework4.0),然后反序列化。有时它有效,有时它会抛出上述错误,我还没有将其缩小到任何特定原因。我用不同的值做了很多测试,但似乎无法找到错误发生时的任何韵律或原因。我在下面包括我的类(class)(减去各种构造函数)。我已多次查看两侧的字节缓冲区,但尚未发现通过线路从一侧发送到另一侧的数据存在差异。[ProtoContract]publicclassLogDat
我最近看到这段代码是由我们为我们工作的承包商编写的。它要么非常聪明,要么非常愚蠢(我认为是后者,但我想要第二个意见)。我在asyncawait上的速度不是很快。基本上它是这样工作的:publicboolSend(TemplatedMessageDtomessage){returnTask.Run(()=>SendAsync(message)).GetAwaiter().GetResult();}publicasyncTaskSendAsync(TemplatedMessageDtomessage){//codedoingstuffvarresults=await_externalres
我非常喜欢使用C#5.0异步编程。然而,有几个地方更新旧代码以与TAP模型保持一致给我带来了问题。这是其中之一-我不确定为什么Task在TResult中不是协变的,但在尝试更新协变接口(interface)以从同步模式移动到异步模式时,它给我带来了问题:旧代码:publicinterfaceIInitializable//**outgenericmodifier**{//////Booleantoindicateifclassisready///boolIsInitialized{get;}//////Callsforinstancetobeinitializedusingcurren