【问题标题】:Constructor syntax for Thread classThread 类的构造函数语法
【发布时间】:2017-07-30 02:16:00
【问题描述】:
Thread t = new Thread(new ThreadStart(Program1.ThreadMethod));

我想知道为什么我们在构造函数中写new ThreadStart(Program1.ThreadMethod)

请解释一下。

【问题讨论】:

  • 解释什么?你真正需要什么帮助?您必须将 ThreadStart 实例传递给构造函数,因此它当然必须来自某个地方。一种方法是使用new ThreadStart(...) 显式创建它。 具体来说你有什么不明白的?
  • 什么是实例变量以及为什么我们将它传递给构造函数?
  • “什么是实例变量,为什么我们将它传递给构造函数?” -- 没有传递变量值,只是一个新创建的实例。至于为什么,嗯...因为它是必需的。没有它,Thread 对象将不知道使用什么方法作为Thread 对象所代表的线程的顶级入口点。
  • 你能告诉我它是哪个类实例吗,因为它不像类 obj 它只是一个新类,所以你能解释一下它的 ThreadStart obj = new ThreadStart 吗???/跨度>
  • “它的 ThreadStart obj = new ThreadStart 在哪里”——没必要。您可以声明一个变量obj,并以这种方式分配它,然后将obj 传递给Thread() 构造函数。但是不要求表达式的值在传递之前存储在变量中。相反,您可以像这里的示例一样,直接使用表达式作为构造函数参数。然后在调用方法时直接将值赋给构造函数参数。

标签: c# constructor delegates


【解决方案1】:

要使用线程过程的实例方法启动线程,请在创建 ThreadStart 委托时使用实例变量和方法名称。从 .NET Framework 2.0 版开始,不需要显式委托。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-02
    • 2015-12-01
    • 1970-01-01
    • 2012-06-11
    • 1970-01-01
    • 2019-03-02
    • 1970-01-01
    相关资源
    最近更新 更多