代表与BackgroundWorker的差异?
任何人都可以解释委托和BackgroundWorker之间的区别吗?在哪种情况下,Backgroundworker比Delegate更有效?因为我们有异步委托,所以需要使用BackGroungWorker。
BackgroundWorker
:
BackgroundWorker类允许您在单独的专用线程上运行操作。
Delegate
:
委托是一种定义方法签名的类型。 …委托用于将方法作为参数传递给其他方法。
使用哪一个与效率无关的问题。
BackgroundWorker
是一个简化了线程处理的包装器,您也可以使用异步委托,但正确管理它们要困难得多。 或者,从MSDN:
当您需要响应式UI并且遇到与此类操作相关的长时间延迟时,BackgroundWorker类提供了一种方便的解决方案。
我在我的博客上 (从进行后台操作的角度)对BackgroundWorker
,异步代理和其他方法进行了简要比较。
BackgroundWorker
具有以下优点:
异步代理具有以下优势:
总之,我建议使用Task
而不是BackgroundWorker
或异步委托。
后台工作程序主要用于UI工作,您需要在后台线程上轻松运行任务并向屏幕提供进度更新。
一个优点是它为你的UI线程编组回调,所以你不需要检查InvokeRequired等。
委托是一种更通用的机制,用于将函数作为参数传递,并通过异步执行它们,它们为您提供了在另一个线程上运行这些方法的简便方法。
后台工作程序是一个抽象,以帮助您在单独的线程上执行操作。
代理并不真正启动单独的线程 – 它们是用于引用方法的类型。
但您可能感兴趣的是何时应该使用异步方法而不是使用后台工作程序。 我对此并没有多少经验,但Anders Hejlsberg在他关于C#未来的PDC会议上谈到了这一点 。
我得到的信息是,在某些情况下,异步方法会更好,因为复杂性较低。 UI线程仍然会被阻止,但不是很长,以至于它很重要。
上述就是C#学习教程:代表与BackgroundWorker的差异?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1008462.html