C#静态方法在多用户并发访问时,运行情况到底是什么样?是排队等待?还是并发的?

简介:

曾经有个错误的认识,一直以为静态方法在多用户并发下会是排队等待,一个个执行,前些日子与朋友 单程列车 http://www.cnblogs.com/zhaojingjing/  一起做了测试后才发现,原来是并发执行的,绝对不会排队等待。

   写程序的不能怕丢人有错就改,积极改正错误,一天比一天上一个台阶就好。

 

模拟并发的测试代码如下,希望对有需要的朋友提供的方便的参考

// --------------------------------------------------------------------
//  All Rights Reserved , Copyright (C) 2011 , Hairihan TECH, Ltd. 
// --------------------------------------------------------------------

namespace  DotNet.Example
{
    
using  DotNet.BaseManager;

    
public   class  StaticTest
    {
        
///   <summary>
        
///  定义委托
        
///   </summary>
        
///   <param name="user"> 用户 </param>
         delegate   void  MakeStaticDelegate( string  user);

        
///   <summary>
        
///  这里是测试静态方法
        
///   </summary>
        
///   <param name="user"> 用户 </param>
         private   static   void  MakeStaticTest( string  user)
        {
            
for  ( int  i  =   0 ; i  <   10 ; i ++ )
            {
                
//  输出当前的变量
                System.Console.WriteLine(user  +   " "   +  i.ToString());
                System.Threading.Thread.Sleep(
1000 );
            }
        }

        
///   <summary>
        
///  这里是模拟多用户同时点击并发
        
///   </summary>
         public   void  DoTest()
        {
            
//  模拟3个用户的并发操作
            MakeStaticDelegate makeStaticDelegate1  =   new  MakeStaticDelegate(MakeStaticTest);
            makeStaticDelegate1.BeginInvoke(
" user1 " null null );
            MakeStaticDelegate makeStaticDelegate2 
=   new  MakeStaticDelegate(MakeStaticTest);
            makeStaticDelegate2.BeginInvoke(
" user2 " null null );
            MakeStaticDelegate makeStaticDelegate3 
=   new  MakeStaticDelegate(MakeStaticTest);
            makeStaticDelegate3.BeginInvoke(
" user3 " null null );
            System.Console.ReadLine();
        }
    }

} 

 

 本文转自jirigala_bao 51CTO博客,原文链接:http://blog.51cto.com/jirigala/810885

相关文章
|
6月前
|
C#
C# DataTable不能通过已删除的行访问该行的信息
C# DataTable不能通过已删除的行访问该行的信息
|
6月前
|
C#
51.c#:string类的静态方法
51.c#:string类的静态方法
174 1
|
11月前
|
缓存 C#
C# 操作路径(Path)类方法的使用与解析运行实例
C# 操作路径(Path)类方法的使用与解析运行实例
|
11月前
|
小程序 C#
C#WinForm实现Loading等待界面
上篇博客中解决了程序加载时屏幕闪烁的问题。 但是,加载的过程变得很缓慢。 这个给用户的体验也不是很好,我这里想加一个Loading的进度条。 项目启动的时候,加载进度条,界面UI加载完毕,进度条消失。
331 0
|
PyTorch API C#
【Python+C#】手把手搭建基于Hugging Face模型的离线翻译系统,并通过C#代码进行访问
目前翻译都是在线的,要在C#开发的程序上做一个可以实时翻译的功能,好像不是那么好做。而且大多数处于局域网内,所以访问在线的api也显得比较尴尬。于是,就有了以下这篇文章,自己搭建一套简单的离线翻译系统。以下内容采用python提供基础翻译服务+ C#访问服务的功能,欢迎围观。
1092 0
【Python+C#】手把手搭建基于Hugging Face模型的离线翻译系统,并通过C#代码进行访问
|
1月前
|
SQL 传感器 开发框架
今天我们聊聊C#的并发和并行
今天我们聊聊C#的并发和并行
53 1
|
2月前
|
SQL 存储 关系型数据库
C#一分钟浅谈:使用 ADO.NET 进行数据库访问
【9月更文挑战第3天】在.NET开发中,与数据库交互至关重要。ADO.NET是Microsoft提供的用于访问关系型数据库的类库,包含连接数据库、执行SQL命令等功能。本文从基础入手,介绍如何使用ADO.NET进行数据库访问,并提供示例代码,同时讨论常见问题及其解决方案,如连接字符串错误、SQL注入风险和资源泄露等,帮助开发者更好地利用ADO.NET提升应用的安全性和稳定性。
244 6
|
3月前
|
缓存 NoSQL Redis
【Azure Redis 缓存】C#程序是否有对应的方式来优化并缩短由于 Redis 维护造成的不可访问的时间
【Azure Redis 缓存】C#程序是否有对应的方式来优化并缩短由于 Redis 维护造成的不可访问的时间
|
3月前
|
Linux C#
【Azure App Service】C#下制作的网站,所有网页本地测试运行无误,发布至Azure之后,包含CHART(图表)的网页打开报错,错误消息为 Runtime Error: Server Error in '/' Application
【Azure App Service】C#下制作的网站,所有网页本地测试运行无误,发布至Azure之后,包含CHART(图表)的网页打开报错,错误消息为 Runtime Error: Server Error in '/' Application