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

时间:2014-09-18 10:38:27

标签: c# multithreading parameters arguments

在这段代码中,我想将一些值传递给线程中的方法。我怎样才能做到这一点?请帮帮我..

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

1 个答案:

答案 0 :(得分:0)

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

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

值得一提的是(从帖子中看不清楚)是否

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

  • myMessage是一个值类型,此处不会出现任何可疑问题(当您复制,创建结构的新实例时),但是您需要注意如果{{1}以某种方式影响onMessageReceived的状态,在线程执行完成后将更改合并到原始mess实例,