Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/307.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

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#_Multithreading - Fatal编程技术网

C#-多线程

C#-多线程,c#,multithreading,C#,Multithreading,我用C#编写了这段代码: 现在,我得到了这个错误: Error 1 The name 'input' does not exist in the current context 它是关于“input.Abort();”行的 我是否可以从其他方法(而不是从创建线程的地方)终止该线程 顺便说一下,我不想让它们是静态的,所以请不要建议这样做。您需要使用类字段而不是局部变量 class Program { private Thread input; public void ac

我用C#编写了这段代码:

现在,我得到了这个错误:

Error   1   The name 'input' does not exist in the current context
它是关于“input.Abort();”行的

我是否可以从其他方法(而不是从创建线程的地方)终止该线程


顺便说一下,我不想让它们是静态的,所以请不要建议这样做。

您需要使用类字段而不是局部变量

class Program
{
    private Thread input;
    public void actual()
    {
        this.input = new Thread(input_m);
        //...
    }
 }


与问题本身无关,您不应该使用多个线程并强制中止从控制台读取的线程。相反,你应该结合睡眠和财产

您需要使用类字段而不是局部变量

class Program
{
    private Thread input;
    public void actual()
    {
        this.input = new Thread(input_m);
        //...
    }
 }

与问题本身无关,您不应该使用多个线程并强制中止从控制台读取的线程。相反,你应该结合睡眠和财产

应该是

    public void actual()
    {
        Thread input = new Thread(input_m);
        if(input.Join(TimeSpan.FromSeconds(10)))
                    //input complete
        else
                  //timeout
    }
应该是

    public void actual()
    {
        Thread input = new Thread(input_m);
        if(input.Join(TimeSpan.FromSeconds(10)))
                    //input complete
        else
                  //timeout
    }

Thread.Abort()真的是…Thread.Abort()真的是…非常感谢。我有兴趣学习更多关于“这个”和课堂领域的课程。我在哪里可以了解更多关于类字段以及如何使用它们的信息?还有,如果在方法中声明,线程是否被视为局部变量?在方法中以
SomeType variable=something()形式定义的任何内容被视为局部变量。非常感谢。我有兴趣学习更多关于“这个”和课堂领域的课程。我在哪里可以了解更多关于类字段以及如何使用它们的信息?还有,如果在方法中声明,线程是否被视为局部变量?在方法中以
SomeType variable=something()形式定义的任何内容
被认为是一个局部变量。谢谢,但我更喜欢Knagis建议的方式,因为它可以让我更全面地控制线程。谢谢,但我更喜欢Knagis建议的方式,因为它可以让我更全面地控制线程。