后台工作者运行工作者完成
根据 do work 方法,我的结果可能是字符串列表或 byte[] 列表
我们如何检查 RunWorkerCompletedEventArgs e -
if (e is List<String>)
这是正确的检查方法吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
不,这不是正确的方法。
正确的方法是使用它:
e
始终是RunWorkerCompletedEventArgs
类型。但此类包含一个Result
属性,其中包含DoWork
事件处理程序的结果。就是这个,你需要检查一下。No, this is not the right way.
The correct way is to use this:
e
will always be of typeRunWorkerCompletedEventArgs
. But this class contains a propertyResult
that contains the result of yourDoWork
event handler. That's the one, you need to check.是的,这是一种可能的方法。
如果您只有两种类型,那就很容易了:
但是如果您必须支持超过两种或三种类型,问题就会出现。在这种情况下,我将创建一个
Dictionary>
并为每种类型编写单独的函数。像这样的事情:这使得支持新类型变得更加简单,并且在
if-else-if
遇到顺序问题时仍然保持 O(1)。在您的后台工作人员中使用它,如下所示:
Yes, that's one possible way to do it.
If you only have two types it would be quite easy:
But the problem comes in to play if you have to support more than just two or three. In that case i'm going to create a
Dictionary<Type, Action<object>>
and write individual functions for each type. Something like this:This makes it more simple to support new types and also stays to be O(1) while the
if-else-if
runs into the order-matters problem.Used will this in your background worker as followed:
e.Result 是包含结果的属性,因此要获取可以执行的类型:
the e.Result is the property with your results, so to get the type you can do: