草庐IT

异步FIFO

全部标签

c# - 异步 CTP - 如何使用异步/等待调用 wcf 服务?

如果我调用WCF服务方法,我将执行如下操作:proxy.DoSomethingAsync();proxy.DoSomethingAsyncCompleted+=OnDoSomethingAsyncCompleted;我如何使用新的async做同样的事情?CTP?我想我需要类似proxy.DoSomethingTaskAsync的东西或proxy.DoSomethingAsync().ToTask()?Web服务调用需要返回Task能够使用await关键字,但如何?? 最佳答案 在CTP中,有一些工厂方法可以将常规APM函数(开始/结

c# - 带有异步 lambda 和 Task.WaitAll 的 Task.Factory.StartNew

我正在尝试对任务列表使用Task.WaitAll。问题是任务是一个异步lambda,它会破坏Tasks.WaitAll,因为它从不等待。这是一个示例代码块:Listtasks=newList();tasks.Add(Task.Factory.StartNew(async()=>{using(dbContext=newDatabaseContext()){varrecords=awaitdbContext.Where(r=>r.Id=100).ToListAsync();//dolongcpuprocesshere...}}Task.WaitAll(tasks);//domorestuf

c# - 在上一个异步操作完成之前,第二个操作在此上下文中启动

留言:"System.NotSupportedExceptionwasunhandledMessage:Anunhandledexceptionoftype'System.NotSupportedException'occurredinmscorlib.dllAdditionalinformation:Asecondoperationstartedonthiscontextbeforeapreviousasynchronousoperationcompleted.Use'await'toensurethatanyasynchronousoperationshavecompletedbe

c# - 在 C# 中启动许多异步任务的语法

我在使用C#中的新异步/等待工具时遇到问题。这是我的场景:staticasyncTaskManageSomeRemoteTask(intId,boolflag){varresult=awaitserviceClient.AuthenticateIdAsync(Id);[...SetupSomeData...]awaitserviceClient.LongAndSlowRemoteCallAsync(Data);}staticvoidSendATonOfJunkToSomeWebServiceThatDoesntSupportBatches{varmyTasks=Dictionary>(

c# - Moq 异步回调因多个参数而失败

如果这是我做错了什么,或者它是最小起订量或NUnit中的问题,我正在尝试锻炼。我正在调用一个soap端点,我的服务引用正在生成同步和异步方法。我正在调用的电话看起来像:publicasyncTaskDoThisAsync(idnameobjectmyobj,intid){awaitws.DoSomethingAsync(myobj,id);}我正在设置我的最小起订量以返回回调,因此我可以将调用Web服务时使用的参数进行交互。我的测试看起来像:varcallback=newidnameobject();wsMock.SetUp(w=>w.DoSomethingAsync(It.IsAny

c# - 不允许异步锁

基本上,我想向tcp服务器发出多个异步请求。我目前有一个工作客户端,它只同步并在每次网络调用时阻止UI。由于几乎同时发生多个请求,我尝试这样做:privateobjectreadonlyreadLock=newobject();publicasyncTaskUpdateDetailsAsync(){//Iwanteveryrequesttowaittheirturnbeforerequesting(usingtheconnection)//topreventareadcallfromcatchinganydatafromanotherrequestlock(readLock){Deta

c# - 异步取自阻塞集合

我正在使用BlockingCollection实现生产者/消费者模式。我有一个异步循环,它用要处理的数据填充集合,然后客户端可以在稍后的时间访问这些数据。数据包很少到达,我希望在不使用阻塞调用的情况下完成轮询。本质上,我正在寻找类似BeginTake的东西和EndTake阻塞集合中不存在,因此我可以在回调中使用内部线程池。它不一定是BlockingCollection以任何方式。任何满足我需要的东西都会很棒。这就是我现在所拥有的。_bufferedPackets是BlockingCollection:publicbyte[]Read(inttimeout){byte[]result;i

c# - 一路异步?

在尝试理解新的异步/等待模式时,我有一个问题找不到答案,即我是否应该用异步装饰我的方法,如果我打算从其他异步函数调用这些方法,或者只需返回Task在什么地方合适?换句话说,A、B或C类中哪一个最好,为什么?classA{publicasyncTaskfoo1()//Shouldbeconsumed{returnawaitfoo2();}publicasyncTaskfoo2()//Couldbeconsumed{returnawaitfoo3();}privateasyncTaskfoo3()//Private{returnawaitTask.Run(...);}}classB{pub

c# - 异步显示对话框

我正在使用async/await从数据库异步加载我的数据,在加载过程中,我想弹出一个加载表单,它只是一个带有运行进度条的简单表单,表明有一个正在运行的进程。加载数据后,对话框将自动关闭。我怎样才能做到这一点?以下是我当前的代码:protectedasyncvoidLoadData(){ProgressForm_progress=newProgressForm();_progress.ShowDialog()//notworkingvardata=awaitGetData();_progress.Close();}更新:我设法通过更改代码让它工作:protectedasyncvoidLo

C#有异步函数调用同步函数或者同步函数调用异步函数

我正在编写一个C#.Net4.5库来执行常见的sql数据库操作(备份、恢复、执行脚本等)。我希望每个操作都有同步和异步功能,因为这个库将被控制台和GUI应用程序使用,但我不想在任何地方重复代码。所以在我看来,我有两个选择:在同步函数中编写完成工作的代码,然后将其包装在异步函数的任务中,如下所示:publicvoidBackupDB(stringserver,stringdb){//Doalloftheworkandlongrunningoperationhere}publicasyncTaskBackupDBAsync(stringserver,stringdb){awaitTask.