Ele*_*ios 3 .net vb.net multithreading asynchronous
我想在我的应用程序中集成Tasks类使用,因为我知道完成我的requeriments,因为我只需要启动一个非常简单的异步操作来调用安全的WinAPI方法,然后如果我使用后台工作程序将是一个非常庞大的解决方案,只是在我的意见中疯狂只是以这种方式运行一条指令:
Task.Factory.StartNew(Sub() NativeMethods.SomeWrapper)
我需要每分钟多次执行该指令(如100),但我不能等待异步操作完成并使用该Wait方法处理对象,因为即使当前Task是活动的,我的意图是启动另一个Task实例相同的操作,让旧任务仍然有效,所以我不知道当每个任务完成时是否GarbageCollector会Task自动处理我的对象,或者我需要使用Dispose方法手动处理每个对象?在这种情况下我很丢失'因为我不知道如何在这个环境中提到我.
我对这种方法有点困惑,我已经尝试过好奇这个非常简单的测试,每次我执行这个循环时,内存增加大约20 mb在我的情况下,我没有看到消费从未被处理掉,无论如何,我不是一个探查器专家,但是因为所有.NET专家都知道vb.net应用程序的内存消耗指标可能效率非常低,所以即使使用下面的这个小测试,我仍然可以使用它:
For x As Integer = 0 To 99999
    Task.Factory.StartNew(Sub() NativeSafeMethods.SomeSafeWrapper)
Next
请有人让我不相信.
Task.Dispose存在处理内部等待句柄,如果您对Task(如调用Wait())执行阻塞操作,则使用该句柄.如果你不这样做,那就没有必要打电话了Dispose.
对于任务,通常建议不要调用,Dispose除非您有非常具体的情况并且它会导致性能问题.如果有一个等待句柄而你没有Dispose,那就没有坏处 - 它会在某些时候被GC拿起.
| 归档时间: | 
 | 
| 查看次数: | 70 次 | 
| 最近记录: |