.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中偶尔需要使用异步的处理的主要内容,如果未能解决你的问题,请参考以下文章

.Net 异步委托中止

ASP.NET MVC中使用异步控制器

你可能需要的Kafka面试题与答案整理

异步Action之AsyncController

在.NET中使用Apache Kafka

异步更新 ASP.NET 面板