草庐IT

Asynchronous

全部标签

c# - 现有连接被远程主机强行关闭

我需要从异步套接字服务器获取UDP数据报,但我的应用程序发生异常:问题出现在那里:Byte[]receiveBytes=udpClient.Receive(refRemoteIpEndPoint);完整源代码:classProgram{staticvoidMain(string[]args){constintPORT=30485;IPAddressIP;IPAddress.TryParse("92.56.23.87",outIP);//Thisconstructorarbitrarilyassignsthelocalportnumber.UdpClientudpClient=newUd

c# - 在键盘事件中使用 CancellationToken 调用 Task.Delay 时出现 TaskCanceledException

我正在尝试延迟从WinRT中的键盘事件调用的方法(示例中的SubmitQuery())的处理,直到一段时间内(在本例中为500毫秒)没有进一步的事件。我只希望在我认为用户已完成输入时运行SubmitQuery()。使用下面的代码,当Task.Delay(500,cancellationToken.Token)时,我不断收到System.Threading.Tasks.TaskCanceledException;叫做。请问我做错了什么?CancellationTokenSourcecancellationToken=newCancellationTokenSource();private

c# - 异步取自阻塞集合

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

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.

c# - MVC4 + async/await + 在 Action 完成前返回响应

在我的MVC4应用程序中,我需要添加一个Controller来上传和处理大文件。文件上传后,我需要立即开始对该文件的异步处理,并在不等待处理完成的情况下将响应返回给浏览器。显然我可以启动一个新线程来手动处理文件,但我想知道我是否可以使用.net4.5引入的异步/等待机制来实现这种情况为了测试这个概念,我尝试了这样的事情:publicasyncTaskTest(){TestAsync();returnView("Test");}publicasyncvoidTestAsync(){awaitLongRunning();}privateTaskLongRunning(){returnTas

c# - 如何将 AsParallel 与 async 和 await 关键字一起使用?

我正在查看某人的异步示例代码,并注意到它的实现方式存在一些问题。在查看代码时,我想知道使用asparallel循环遍历列表是否比正常循环遍历列表更有效。据我所知,两者在性能上的差异很小,都用完了每个处理器,并且都谈论了相同的完成时间。这是第一种方式vartasks=Client.GetClients().Select(asyncp=>awaitp.Initialize());这是第二个vartasks=Client.GetClients().AsParallel().Select(asyncp=>awaitp.Initialize());我假设两者之间没有区别是否正确?完整的程序可以在

c# - 如何同步任务?

假设我有一个保存到文件的异步方法:asyncTaskSaveToFileAsync(){varfile=awaitfolder.GetFileAsync(...)varstream=file.OpenFileAsync(...)///etc}现在假设同时调用了两次SaveToFileAsync。这是一个问题,因为您不能同时写入同一个文件如果这是一个常规方法,lock()会解决这个问题:voidSaveToFile(){lock(something){///codehere}}但是,在异步方法中不允许使用锁。当然,可以调用Monitor.Enter()或使用互斥体,但这些对象与线程一起工

c# - 理解调度队列

我想我需要一些帮助来理解DispatcherQueue。当新工作到达时,它会被添加到调度程序队列的开头,而当Dispatcher想要处理工作项时,它会从开头被删除。更一般地说:如果有工作,它将以FIFO方式存储在队列中,并在没有剩余工作时进行处理。MSDN文档here是指loop和frame:Dispatcher在循环中处理工作项队列。循环称为帧。但是在这种情况下循环在哪里?对我来说,循环是指迭代某些东西,当它到达终点时,它会重新开始。frame的概念是什么?根据MSDN文档,一个框架是队列中工作项目的一部分?如果是这样,应该如何使用静态方法Disptatcher.PushFrame(

c# - 调用和开始调用

您好,我正在用C#开发一些应用程序。目前我正在处理线程,我有一个问题在我的脑海中。Invoke和BeginInvoke有什么区别?我阅读了一些主题并在这里找到了一些有用的信息:here但是下面代码中Invoke和BeginInvoke的区别是什么:privatevoidProcessRoutine(){for(intnValue=StartFrom;nValue其中MyDelegate是对MessageHandler函数的引用。我注意到在使用Invoke刷新标签时,使用BeginInvokelblStatus.Text不会刷新。此外,我知道Invoke等待其执行完成。我感兴趣的最重要的