XFEExtension
【DLL】XFE各类拓展是一个C#的DLL库,旨在优化C#代码中常用语句的使用,并提供更简洁的访问方式,同时提供Xunit测试框架,快速搭建服务器/客户端,免费ChatGPTAPI接口,免费通讯服务器,XFE下载器,新增格式等
关注
0
Fork
0
Star
0
返回提交历史
Deleted
XFE各类拓展/ThreadExtention.cs
+0
-141
XFEstudio/XFEExtension
Delete XFE各类拓展/ThreadExtention.cs
c29e848
代码差异
1 个文件
+0
-141
@@ -1,141 +0,0 @@
1
using System.Collections.Generic;
2
using System.Threading;
3
using System.Threading.Tasks;
4
5
namespace XFE各类拓展.ThreadExtension
6
{
7
/// <summary>
8
/// 线程的拓展
9
/// </summary>
10
public static class ThreadExtension
11
{
12
#region 等待线程状态
13
/// <summary>
14
/// 等待指定线程组的所有线程完成
15
/// </summary>
16
/// <param name="threads"></param>
17
/// <returns>等待任务</returns>
18
public static Task WaitThreadListComplete(this List<Thread> threads)
19
{
20
return Task.Run(() =>
21
{
22
while (true)
23
{
24
bool isAllThreadComplete = true;
25
foreach (var thread in threads)
26
{
27
if (thread.ThreadState != ThreadState.Stopped)
28
{
29
isAllThreadComplete = false;
30
break;
31
}
32
}
33
if (isAllThreadComplete)
34
{
35
break;
36
}
37
}
38
});
39
}
40
/// <summary>
41
/// 等待指定线程组的所有线程达到指定状态
42
/// </summary>
43
/// <param name="threads"></param>
44
/// <param name="threadState">线程的状态</param>
45
/// <returns></returns>
46
public static Task WaitThreadListComplete(this List<Thread> threads, ThreadState threadState)
47
{
48
return Task.Run(() =>
49
{
50
while (true)
51
{
52
bool isAllThreadComplete = true;
53
foreach (var thread in threads)
54
{
55
if (thread.ThreadState != threadState)
56
{
57
isAllThreadComplete = false;
58
break;
59
}
60
}
61
if (isAllThreadComplete)
62
{
63
break;
64
}
65
}
66
});
67
}
68
/// <summary>
69
/// 等待指定线程完成
70
/// </summary>
71
/// <param name="thread"></param>
72
/// <returns>等待任务</returns>
73
public static Task WaitThreadComplete(this Thread thread)
74
{
75
return Task.Run(() => { while (thread.ThreadState != ThreadState.Stopped) ; });
76
}
77
/// <summary>
78
/// 等待指定线程达到指定状态
79
/// </summary>
80
/// <param name="thread"></param>
81
/// <param name="threadState">线程的状态</param>
82
/// <returns></returns>
83
public static Task WaitThreadComplete(this Thread thread, ThreadState threadState)
84
{
85
return Task.Run(() => { while (thread.ThreadState != threadState) ; });
86
}
87
#endregion
88
#region 新建线程并开始
89
/// <summary>
90
/// 新建一个线程并开始
91
/// </summary>
92
/// <param name="method">线程方法</param>
93
/// <param name="parameter">传递的参数</param>
94
/// <returns></returns>
95
public static Thread StartNewThread(ParameterizedThreadStart method, object parameter)
96
{
97
Thread thread = new Thread(method);
98
thread.Start(parameter);
99
return thread;
100
}
101
/// <summary>
102
/// 新建一个线程并开始
103
/// </summary>
104
/// <param name="method">线程方法</param>
105
/// <returns></returns>
106
public static Thread StartNewThread(ThreadStart method)
107
{
108
Thread thread = new Thread(method);
109
thread.Start();
110
return thread;
111
}
112
/// <summary>
113
/// 新建一个线程并开始
114
/// </summary>
115
/// <param name="method">线程方法</param>
116
/// <param name="parameter">传递的参数</param>
117
/// <param name="apartmentState">线程的状态</param>
118
/// <returns></returns>
119
public static Thread StartNewThread(ParameterizedThreadStart method, object parameter, ApartmentState apartmentState)
120
{
121
Thread thread = new Thread(method);
122
thread.SetApartmentState(apartmentState);
123
thread.Start(parameter);
124
return thread;
125
}
126
/// <summary>
127
/// 新建一个线程并开始
128
/// </summary>
129
/// <param name="method">线程方法</param>
130
/// <param name="apartmentState">线程的状态</param>
131
/// <returns></returns>
132
public static Thread StartNewThread(ThreadStart method, ApartmentState apartmentState)
133
{
134
Thread thread = new Thread(method);
135
thread.SetApartmentState(apartmentState);
136
thread.Start();
137
return thread;
138
}
139
#endregion
140
}
141
}