C# resetAbort做什么?

C# resetAbort做什么?,c#,reset,thread-abort,threadabortexception,C#,Reset,Thread Abort,Threadabortexception,嗨,我有以下测试代码: class Program { static void Main(string[] args) { Thread t = new Thread(Work); t.Start(); Thread.Sleep(1000); t.Abort(); Thread.Sleep(1000); t.Abort(); Thread.Sleep(1000);

嗨,我有以下测试代码:

class Program
{
    static void Main(string[] args)
    {
        Thread t = new Thread(Work);
        t.Start();
        Thread.Sleep(1000);
        t.Abort();
        Thread.Sleep(1000);
        t.Abort();
        Thread.Sleep(1000);
        t.Abort();
        t.Join();
        Console.WriteLine("End");
    }

    static void Work()
    {
        int i = 0;
        while (i<10)
        {
            try
            {
                while(true);
            }
            catch(ThreadAbortException)
            {
                Thread.ResetAbort();
            }

            Console.WriteLine("I will come back!");
            i++;
        }
    }
}
类程序
{
静态void Main(字符串[]参数)
{
螺纹t=新螺纹(工件);
t、 Start();
睡眠(1000);
t、 中止();
睡眠(1000);
t、 中止();
睡眠(1000);
t、 中止();
t、 Join();
控制台。写入线(“结束”);
}
静态孔隙功()
{
int i=0;

while(i它取消中止线程的请求。因此,在这种情况下,循环将继续,线程应该仍然处于活动状态。

ResetAborts取消对线程的中止请求。

其他人关于
ResetAbort
的回答是正确的。之所以不输出“End”是因为
t.Join()
从不返回。这是因为您的线程只尝试中止三次,而您的循环包含10次无限循环尝试。
Join
在目标线程完成其委托的运行时返回,而您的委托没有完成。

哦..我省略了内部while循环…因此程序永远不会结束。谢谢!它取消了重新启动任务中止-所以它将从内部恢复,而(真的),我是对的吗?不,因为抛出了一个异常,所以它将不再在那里,但很难推测,因为这个代码是…奇怪。是的!这是我的错。对不起!同时谢谢你!