.Net中偶尔需要使用异步的处理
Posted 真爱无限
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了.Net中偶尔需要使用异步的处理相关的知识,希望对你有一定的参考价值。
我们知道程序中使用异步、多线程会提高程序的响应速度,但也不能无限使用多线程,这在高峰会造成系统cpu上升,系统卡顿,这就需要我们自己来控制开启的线程数,不多说看代码。
private static int threadCountByOrderId = 0;
private static int maxThreadCountByOrderId = 30;
public bool dealorder(int OrderId)
var threadNumber = Interlocked.Exchange(ref threadCountByOrderId, threadCountByOrderId);
if (threadCountByOrderId > maxThreadCountByOrderId)
return OrderChangePushToBigDataImpService.PushOrderToBigData(OrderId, Logger);
else
Task.Factory.StartNew(() =>
Interlocked.Increment(ref threadCountByOrderId);
try
using (var context = MefInjectionProvider.CreateContext())
var NewOrderChangePushToBigDataImpService = context.Value.GetExport<IOrderChangePushToBigDataImpService>();
NewOrderChangePushToBigDataImpService.PushOrderToBigData(OrderId, Logger);
finally
Interlocked.Decrement(ref threadCountByOrderId);
);
return true;
这样就能控制线程数据了
以上是关于.Net中偶尔需要使用异步的处理的主要内容,如果未能解决你的问题,请参考以下文章