• C# 多线程调用静态方法或者静态实例中的同一个方法-方法内部的变量是线程安全的


     C#  多线程调用静态方法或者静态实例中的同一个方法-方法内部的变量是线程安全的

    using System;
    using System.Threading;
    using System.Threading.Tasks;
    using System.Diagnostics;
    using System.Reflection;

    namespace MulThreadTest
    {
    class MainClass
    {

    public static void Main (string[] args)
    {

    for (int i = 0; i < 2; i++) {
    var th=new Thread(
    new ParameterizedThreadStart((state)=>{
    DoHelper.Instance.SayHello(state.ToString());
    })
    );
    th.Start (i);
    }

    Console.ReadKey ();

    }


    }

    public class DoHelper{

    public static DoHelper Instance=new DoHelper();

    public string SayHello(string id){

    string res = "调用Id:" + id;
    StackTrace trace = new StackTrace(true);
    StackFrame frame = trace.GetFrame(1);//1代表上级,2代表上上级,以此类推
    MethodBase method = frame.GetMethod(); //获得当前方法名称


    Console.WriteLine (res);
    Console.WriteLine ("当前方法的Hash code: "+method.GetHashCode());
    /*if (id=="1") {
    System.Threading.Thread.Sleep (5000);
    }
    */
    System.Threading.Thread.Sleep (1000);


    Console.WriteLine ("当前线程上下文Id:"+Thread.CurrentContext.ContextID);
    Console.WriteLine ("当前线程Id:"+Thread.CurrentThread.ManagedThreadId);
    Console.WriteLine ("当前时间:"+DateTime.Now.ToString());
    Console.WriteLine ("当前Trace hashcode :"+trace.GetHashCode());//Variables declared inside methods (with the possible exception of "captured" variables) are isolated,


    return res;
    }

    }
    }

  • 相关阅读:
    MFC下的各种字符串类型和相互转换
    LRESULT与wParam和lParam的问题
    C#.NET 消息机制
    Windows消息机制要点
    Windows 消息机制详解
    gb2312和UTF-8的区别
    DefWndProc/WndProc/IMessageFilter的区别
    结合windows消息系统理解C#中WndProc函数和DefWndProc函数
    Mono addin 学习笔记 5 TypeExtensionPoint
    Mono addin 学习笔记 4 再论数据扩展点(Data only extension point)
  • 原文地址:https://www.cnblogs.com/micro-chen/p/10118925.html
Copyright © 2020-2023  润新知