2)通过System.Diagnostics.ProcessThread来设置优先级,它能设置比第1种方法更多的优先级
Idle 指定空闲优先级。 它是所有线程的可能的最低优先级值,与关联的 ProcessPriorityClass 的值无关。
Lowest 指定最低优先级。 这比关联的 ProcessPriorityClass 的普通优先级低两级。
BelowNormal 指定的优先级比关联的 ProcessPriorityClass 的普通优先级低一级。
Normal 指定关联的 ProcessPriorityClass 的普通优先级。
AboveNormal 指定的优先级比关联的 ProcessPriorityClass 的普通优先级高一级。
Highest 指定最高优先级。 这比关联的 ProcessPriorityClass 的普通优先级高两级。
TimeCritical 指定时间关键优先级。 这是所有线程中的最高优先级,与关联的 ProcessPriorityClass 的值无关
部分代码
Dim myprocess As Process = Process.GetCurrentProcess()
Dim value As ProcessThreadCollection
Dim pt As ProcessThread
value = myprocess.Threads
For Each pt In value
pt.PriorityLevel = ThreadPriorityLevel.AboveNormal
Next
此外,还可以设置线程动态优先级调整的开关
ProcessThread.PriorityBoostEnabled
当 PriorityBoostEnabled 为 true 时,只要关联的进程离开等待状态,系统便暂时提升该线程的优先级。 此操作可防止其他进程中断当前线程的处理。 PriorityBoostEnabled 设置影响所有现有线程及该进程随后创建的所有线程。 若要还原正常行为,请将 PriorityBoostEnabled 属性设置为 false。
仅当线程运行在一个将 PriorityClass 设置为动态优先级枚举值之一(Normal、High 或 RealTime)时,PriorityBoostEnabled 才有效。
4、睡眠与阻塞
Imports System.Threading
Class Example
Shared Sub Main()
For i As Integer = 0 To 4
Console.WriteLine("Sleep for 2 seconds.")
Thread.Sleep(2000)
Next
Console.WriteLine("Main thread exits.")
End Sub
End Class
Imports System.Threading
Class Example
Shared Sub Main()
Dim interval As New TimeSpan(0, 0, 2)
For i As Integer = 0 To 4
Console.WriteLine("Sleep for 2 seconds.")
Thread.Sleep(interval)
Next
Console.WriteLine("Main thread exits.")
End Sub
End Class
mythread1.Start(myprocess)
mythread2.Start(myprocess)
mythread3.Start(myprocess)
mythread1.Suspend()
mythread2.Suspend()
mythread3.Suspend()
mythread1.Resume()
mythread2.Resume()
mythread3.Resume()
本文介绍了如何使用System.Diagnostics.ProcessThread来设置线程优先级,包括Idle、Lowest、BelowNormal、Normal、AboveNormal、Highest和TimeCritical等不同级别,并探讨了PriorityBoostEnabled属性的作用。此外,还讲解了线程的睡眠、阻塞、挂起与恢复的方法。
722

被折叠的 条评论
为什么被折叠?



