Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用c将参数传递给ref参数?_C#_Multithreading_Parameters_Arguments - Fatal编程技术网

C# 如何使用c将参数传递给ref参数?

C# 如何使用c将参数传递给ref参数?,c#,multithreading,parameters,arguments,C#,Multithreading,Parameters,Arguments,在这段代码中,我想将一些值传递给线程内的方法。我该怎么做?请帮帮我 private void onMessageReceivedThreading(ref SMSDeliver myMessage) { onreceiveThread = new Thread(()=> onMessageReceived(myMessage)); onreceiveThread.Start(); } 您可以考虑将其分配给局部变量,如: private void onMessageRece

在这段代码中,我想将一些值传递给线程内的方法。我该怎么做?请帮帮我

private void onMessageReceivedThreading(ref SMSDeliver myMessage)
{
    onreceiveThread = new Thread(()=> onMessageReceived(myMessage));
    onreceiveThread.Start();
}

您可以考虑将其分配给局部变量,如:

private void onMessageReceivedThreading(ref SMSDeliver myMessage)
{
      var mess = myMessage; 
      onreceiveThread = new Thread(()=> onMessageReceived(mess ));
      onreceiveThread.Start();
}
值得一提的是,如果

myMessage是引用类型,您仍然引用同一类型的实例,因此可能会遇到一些并发性问题。注意这一点

myMessage是一种值类型,当您复制、创建结构的新实例时,这里可能不会发生一致性问题,但需要注意的是,如果onMessageReceived以某种方式影响混乱状态,请在线程执行完成后将更改合并到原始myMessage实例