|
|
|
|
using Xunit.Abstractions;
|
|
|
|
|
|
|
|
|
|
namespace MultiThreadingStudy.xUnitTest
|
|
|
|
|
{
|
|
|
|
|
public class ThreadTest:IDisposable
|
|
|
|
|
{
|
|
|
|
|
private readonly ITestOutputHelper _output;
|
|
|
|
|
|
|
|
|
|
public ThreadTest(ITestOutputHelper testOutput)
|
|
|
|
|
{
|
|
|
|
|
_output = testOutput;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// <20><><EFBFBD>Է<EFBFBD><D4B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߳<EFBFBD>Ϊ<EFBFBD><CEAA>̨<EFBFBD>߳<EFBFBD>
|
|
|
|
|
/// <20><><EFBFBD>ۣ<EFBFBD><DBA3>ڲ<EFBFBD><DAB2>Է<EFBFBD><D4B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߳<EFBFBD>(<28><>ʹ<EFBFBD><CAB9><EFBFBD>ó<EFBFBD>ǰ̨<C7B0>߳<EFBFBD>)<29><>Ĭ<EFBFBD><C4AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>£<EFBFBD><C2A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֹ<EFBFBD><D6B9>Ԫ<EFBFBD><D4AA><EFBFBD>Է<EFBFBD><D4B7><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD>н<EFBFBD><D0BD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
/// <20><><EFBFBD>Է<EFBFBD><D4B7><EFBFBD><EFBFBD>ܿ<EFBFBD><DCBF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߳̽<DFB3><CCBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߳<EFBFBD>û<EFBFBD><C3BB>ִ<EFBFBD><D6B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ų<EFBFBD><C5B2>Է<EFBFBD><D4B7><EFBFBD><EFBFBD>߳̽<DFB3><CCBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
/// </summary>
|
|
|
|
|
[Fact]
|
|
|
|
|
public void TestRunThread_Test()
|
|
|
|
|
{
|
|
|
|
|
_output.WriteLine($"<22><><EFBFBD>߳<EFBFBD>Id={Thread.CurrentThread.ManagedThreadId}, <20>Ƿ<EFBFBD><C7B7><EFBFBD>̨<EFBFBD>߳<EFBFBD>={Thread.CurrentThread.IsBackground}");
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD>ԣ<EFBFBD><D4A3><EFBFBD><EFBFBD>Ե<EFBFBD><D4B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߳<EFBFBD>Ϊ<EFBFBD><CEAA>̨<EFBFBD>߳<EFBFBD>
|
|
|
|
|
Assert.True( Thread.CurrentThread.IsBackground);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
///
|
|
|
|
|
/// </summary>
|
|
|
|
|
[Fact]
|
|
|
|
|
public void Test1()
|
|
|
|
|
{
|
|
|
|
|
_output.WriteLine($"<22><><EFBFBD>߳<EFBFBD>Id={Thread.CurrentThread.ManagedThreadId}, <20>Ƿ<EFBFBD><C7B7><EFBFBD>̨<EFBFBD>߳<EFBFBD>={Thread.CurrentThread.IsBackground}");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Thread t = new Thread(() =>
|
|
|
|
|
{
|
|
|
|
|
_output.WriteLine($"<22><><EFBFBD>߳<EFBFBD>Id={Thread.CurrentThread.ManagedThreadId}, <20><><EFBFBD>߳<EFBFBD><DFB3><EFBFBD><EFBFBD><EFBFBD>={Thread.CurrentThread.Name}");
|
|
|
|
|
|
|
|
|
|
_output.WriteLine($"{Thread.CurrentThread.Name} <20><><EFBFBD>̣߳<DFB3><CCA3><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>");
|
|
|
|
|
Thread.Sleep(100);
|
|
|
|
|
_output.WriteLine($"{Thread.CurrentThread.Name} <20><><EFBFBD>̴߳<DFB3><CCB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>л<EFBFBD><D0BB>ѣ<EFBFBD>ִ<EFBFBD>н<EFBFBD><D0BD><EFBFBD><EFBFBD><EFBFBD>");
|
|
|
|
|
})
|
|
|
|
|
{
|
|
|
|
|
Name = "FirstThread",
|
|
|
|
|
Priority = ThreadPriority.Normal,
|
|
|
|
|
IsBackground = false,
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
t.Start();
|
|
|
|
|
t.Join();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void Dispose()
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|