热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

C#.Net中的异步交互示例?-ExamplesofAsynchronousInteractioninC#.Net?

Iknowthatitspossibletoimplicitlyprovideasynchronousinteractionusing:我知道可以使用以下方法隐式提供异步交互:

I know that it's possible to implicitly provide asynchronous interaction using:

我知道可以使用以下方法隐式提供异步交互:

  • Asynchronous Delegates
  • Asynchronous Callbacks

I was just wondering what other methods .Net supports for asynchronous interaction?

我只是想知道.Net支持异步交互的其他方法是什么?

Help greatly appreciated.

非常感谢。

Regards

EDIT:

Maybe I didn't explain myself correctly.... I UNDERSTAND THREADING AND CONCURRENCY PERFECTLY, I simply wanted a list of potential ways to implement asychronous interaction in .Net, aside from using asynchronous delegates or callbacks.

也许我没有正确解释自己......我完全理解线程和并发,我只是想要一个在.Net中实现异步交互的潜在方法列表,除了使用异步委托或回调。

5 个解决方案

#1


(I am not sure I entirely understand what you aim for in your question, but I'll give it a shot)

(我不确定我完全理解你在问题中的目的,但我会试一试)

For allowing asynchronous code execution in winforms applications the BackgroundWorker component is rather convinient. I also often use the ThreadPool.QueueUserWorkItem method as a simple way to spawn a method on its own thread.

为了允许在winforms应用程序中执行异步代码,BackgroundWorker组件非常方便。我还经常使用ThreadPool.QueueUserWorkItem方法作为在其自己的线程上生成方法的简单方法。

#2


Take a look at this web page, its nicely written with good examples: http://www.yoda.arachsys.com/csharp/threads/

看一下这个网页,它写得很好,有很好的例子:http://www.yoda.arachsys.com/csharp/threads/

#3


This might be outside what you're asking, but there is also support for Message Queueing.

这可能超出了您的要求,但也支持消息队列。

#4


Asynchronous operations in .NET are started by calling a method that is named BeginSomething, where Something is probably going to be Invoke, Write, Send or some other operation.

.NET中的异步操作是通过调用名为BeginSomething的方法启动的,其中Something可能是Invoke,Write,Send或其他一些操作。

Example:

http://msdn.microsoft.com/en-us/library/system.net.sockets.socket.beginsend.aspx

You pass a delegate of your own that will be executed when the operation completes. You can then get the result of the operation by calling a corresponding method EndSomething.

您传递将在操作完成时执行的您自己的委托。然后,您可以通过调用相应的方法EndSomething来获取操作的结果。

Example:

http://msdn.microsoft.com/en-us/library/system.net.sockets.socket.endsend(VS.80).aspx

The pattern is usually the same regardless of the operation being performed. There are oddities where the EndSomething method is named something inconsistent instead.

无论正在执行的操作如何,模式通常都是相同的。有些奇怪的地方,EndSomething方法被命名为不一致的东西。

More examples:

  • http://msdn.microsoft.com/en-us/library/system.io.stream.beginread.aspx
  • http://msdn.microsoft.com/en-us/library/system.servicemodel.description.imetadataexchange.beginget.aspx
  • http://msdn.microsoft.com/en-us/library/system.net.webrequest.begingetresponse.aspx

#5


you could base Expression tress or other monads (not yet allow to link but the term can be found wiki and Calvin has a great blog on the subject as well)

你可以基于表达发辫或其他monad(还不允许链接,但可以找到wiki这个术语,Calvin也有关于这个主题的好博客)

basically everything that allows you to make imparative coding can be used for asyncrounous implementations.

基本上所有允许你进行比较编码的东西都可以用于异步实现。

You could also google on continuation passing. A style of coding where all methods do not return values (void) but take a parameter (a delegate of sorts) telleing it what to execute when done.

你也可以google继续传球。一种编码风格,其中所有方法都不返回值(void),但是接受一个参数(一个类别的委托)来完成它要执行的操作。


推荐阅读
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • 深入理解Kafka服务端请求队列中请求的处理
    本文深入分析了Kafka服务端请求队列中请求的处理过程,详细介绍了请求的封装和放入请求队列的过程,以及处理请求的线程池的创建和容量设置。通过场景分析、图示说明和源码分析,帮助读者更好地理解Kafka服务端的工作原理。 ... [详细]
  • C++ STL复习(13)容器适配器
    STL提供了3种容器适配器,分别为stack栈适配器、queue队列适配器以及priority_queue优先权队列适配器。不同场景下,由于不同的序列式 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • Tomcat/Jetty为何选择扩展线程池而不是使用JDK原生线程池?
    本文探讨了Tomcat和Jetty选择扩展线程池而不是使用JDK原生线程池的原因。通过比较IO密集型任务和CPU密集型任务的特点,解释了为何Tomcat和Jetty需要扩展线程池来提高并发度和任务处理速度。同时,介绍了JDK原生线程池的工作流程。 ... [详细]
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • 成功安装Sabayon Linux在thinkpad X60上的经验分享
    本文分享了作者在国庆期间在thinkpad X60上成功安装Sabayon Linux的经验。通过修改CHOST和执行emerge命令,作者顺利完成了安装过程。Sabayon Linux是一个基于Gentoo Linux的发行版,可以将电脑快速转变为一个功能强大的系统。除了作为一个live DVD使用外,Sabayon Linux还可以被安装在硬盘上,方便用户使用。 ... [详细]
  • Android工程师面试准备及设计模式使用场景
    本文介绍了Android工程师面试准备的经验,包括面试流程和重点准备内容。同时,还介绍了建造者模式的使用场景,以及在Android开发中的具体应用。 ... [详细]
  • STL迭代器的种类及其功能介绍
    本文介绍了标准模板库(STL)定义的五种迭代器的种类和功能。通过图表展示了这几种迭代器之间的关系,并详细描述了各个迭代器的功能和使用方法。其中,输入迭代器用于从容器中读取元素,输出迭代器用于向容器中写入元素,正向迭代器是输入迭代器和输出迭代器的组合。本文的目的是帮助读者更好地理解STL迭代器的使用方法和特点。 ... [详细]
  • 深入解析Linux下的I/O多路转接epoll技术
    本文深入解析了Linux下的I/O多路转接epoll技术,介绍了select和poll函数的问题,以及epoll函数的设计和优点。同时讲解了epoll函数的使用方法,包括epoll_create和epoll_ctl两个系统调用。 ... [详细]
  • 本文介绍了一道经典的状态压缩题目——关灯问题2,并提供了解决该问题的算法思路。通过使用二进制表示灯的状态,并枚举所有可能的状态,可以求解出最少按按钮的次数,从而将所有灯关掉。本文还对状压和位运算进行了解释,并指出了该方法的适用性和局限性。 ... [详细]
  • 广度优先遍历(BFS)算法的概述、代码实现和应用
    本文介绍了广度优先遍历(BFS)算法的概述、邻接矩阵和邻接表的代码实现,并讨论了BFS在求解最短路径或最短步数问题上的应用。以LeetCode中的934.最短的桥为例,详细阐述了BFS的具体思路和代码实现。最后,推荐了一些相关的BFS算法题目供大家练习。 ... [详细]
  • RingBuffer,或者说CircularBuffer,是一个长度固定的缓冲区,当从一端插入元素超过指定的最大长度时,缓冲区另一端的元素 ... [详细]
author-avatar
一片绿洲053766
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有