【问题标题】:how to pass arguments to a ref parameters using c#?如何使用 c# 将参数传递给 ref 参数?
【发布时间】:2014-11-12 15:50:43
【问题描述】:

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

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

【问题讨论】:

    标签: c# multithreading parameters arguments


    【解决方案1】:

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

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

    值得一提(从帖子中不清楚)如果

    • myMessage 是一个引用类型,你仍然引用同一个类型的实例,所以可能会遇到一些并发问题。注意这一点。

    • myMessage是值类型,这里可能不会出现并发问题(复制时,创建一个结构的新实例),但需要注意的是,如果onMessageReceived影响了mess 以某种方式合并对原始 myMessage 实例的更改,线程执行完成之后。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-20
      • 2020-09-28
      • 2019-09-27
      • 1970-01-01
      相关资源
      最近更新 更多