VB.Net by API/System.Threading/Thread
Содержание
Thread.Abort()
<source lang="vbnet"> Imports System Imports System.Drawing Imports System.Threading Imports System.Windows.Forms Imports System.IO
public class MainClass
Shared Sub Main() Dim Thrd As Thread Dim TStart As New ThreadStart(AddressOf BusyThread) Thrd = New Thread(TStart) Thrd.Priority = ThreadPriority.Highest Thrd.Start() Console.WriteLine(Thrd.ThreadState.ToString("G")) Console.WriteLine("Thrd.IsAlive " & Thrd.IsAlive) If Thrd.IsAlive Then Thrd.Abort() Thrd.Join() End If End Sub Shared Sub BusyThread() While True "Console.Write("thread ") End While End Sub
End Class
</source>
Thread.CurrentPrincipal
<source lang="vbnet">
Imports System.Threading Module Module1
Sub Main() Dim objThread As Thread objThread = Thread.CurrentThread With objThread Console.WriteLine("Apartment State: {0}", .ApartmentState) Console.WriteLine("Current Context: {0}", .CurrentContext) Console.WriteLine("Current Culture: {0}", .CurrentCulture) Console.WriteLine("Current Principal: {0}", .CurrentPrincipal) Console.WriteLine("Current Thread: {0}", .CurrentThread) Console.WriteLine("Current UI Culture: {0}", .CurrentUICulture) Console.WriteLine("Is Alive: {0}", .IsAlive) Console.WriteLine("Is Background: {0}", .IsBackground) Console.WriteLine("Is Thread Pool Thread: {0}", .IsThreadPoolThread) Console.WriteLine("Name: {0}", .Name) Console.WriteLine("Priority: {0}", .Priority) Console.WriteLine("Thread State: {0}", .ThreadState) End With End Sub
End Module
</source>
Thread.CurrentThread
<source lang="vbnet"> Imports System Imports System.Data Imports System.Globalization Imports System.Threading public class Test
public Shared Sub Main Thread.CurrentThread.CurrentCulture = New CultureInfo("de-DE") Thread.CurrentThread.CurrentUICulture = New CultureInfo("de-DE") End Sub
End class
</source>
Thread.IsAlive
<source lang="vbnet">
Imports System Imports System.Drawing Imports System.Threading Imports System.Windows.Forms Imports System.IO
public class MainClass
Shared Sub Main() Dim Thrd As Thread Dim TStart As New ThreadStart(AddressOf BusyThread) Thrd = New Thread(TStart) Thrd.Priority = ThreadPriority.Highest Thrd.Start() Console.WriteLine(Thrd.ThreadState.ToString("G")) Console.WriteLine("Thrd.IsAlive " & Thrd.IsAlive) If Thrd.IsAlive Then Thrd.Abort() Thrd.Join() End If End Sub Shared Sub BusyThread() While True "Console.Write("thread ") End While End Sub
End Class
</source>
Thread.Join()
<source lang="vbnet"> Imports System Imports System.Drawing Imports System.Threading Imports System.Windows.Forms Imports System.IO
public class MainClass
Shared Sub Main() Dim Thrd As Thread Dim TStart As New ThreadStart(AddressOf BusyThread) Thrd = New Thread(TStart) Thrd.Priority = ThreadPriority.Highest Thrd.Start() Console.WriteLine(Thrd.ThreadState.ToString("G")) Console.WriteLine("Thrd.IsAlive " & Thrd.IsAlive) If Thrd.IsAlive Then Thrd.Abort() Thrd.Join() End If End Sub Shared Sub BusyThread() While True "Console.Write("thread ") End While End Sub
End Class
</source>
Thread.Resume
<source lang="vbnet"> Imports System.Threading Module Module1
Public A As Thread = New Thread(AddressOf MethodA) Public B As Thread = New Thread(AddressOf MethodB) Public C As Thread = New Thread(AddressOf MethodC) Sub MethodA() Dim I As Integer Try A.Suspend() For I = 0 To 250 Console.Write("A") Next Catch E As ThreadStateException Console.WriteLine("Thread A Expection" & E.ToString()) End Try End Sub Sub MethodB() Dim I As Integer Try For I = 0 To 250 Console.Write("B") Next Catch E As ThreadAbortException Console.Write("Thread B has been aborted") End Try End Sub Sub MethodC() Dim I As Integer Try If (B.IsAlive) Then B.Abort() End If For I = 0 To 250 If (A.ThreadState = ThreadState.Suspended) Then A.Resume() End If Console.Write("C") Next Catch E As Threading.ThreadStateException Console.WriteLine("Thread C Expection" & E.ToString()) End Try End Sub Sub Main() A.Start() B.Start() C.Start() End Sub
End Module
</source>
Thread.Sleep
<source lang="vbnet">
Imports System.Threading Module Module1
Sub TaskA() Dim I As Integer Thread.Sleep(1000) For I = 0 To 250 System.Console.Write("A") Next End Sub Sub TaskB() Dim I As Integer Thread.Sleep(500) For I = 0 To 250 System.Console.Write("B") Next End Sub Sub TaskC() Dim I As Integer Thread.Sleep(100) For I = 0 To 250 System.Console.Write("C") Next End Sub Sub Main() Dim A As Thread = New Thread(AddressOf TaskA) Dim B As Thread = New Thread(AddressOf TaskB) Dim C As Thread = New Thread(AddressOf TaskC) A.Start() B.Start() C.Start() End Sub
End Module
</source>
Thread.Suspend
<source lang="vbnet">
Imports System.Threading Module Module1
Public A As Thread = New Thread(AddressOf MethodA) Public B As Thread = New Thread(AddressOf MethodB) Public C As Thread = New Thread(AddressOf MethodC) Sub MethodA() Dim I As Integer Try A.Suspend() For I = 0 To 250 Console.Write("A") Next Catch E As ThreadStateException Console.WriteLine("Thread A Expection" & E.ToString()) End Try End Sub Sub MethodB() Dim I As Integer Try For I = 0 To 250 Console.Write("B") Next Catch E As ThreadAbortException Console.Write("Thread B has been aborted") End Try End Sub Sub MethodC() Dim I As Integer Try If (B.IsAlive) Then B.Abort() End If For I = 0 To 250 If (A.ThreadState = ThreadState.Suspended) Then A.Resume() End If Console.Write("C") Next Catch E As Threading.ThreadStateException Console.WriteLine("Thread C Expection" & E.ToString()) End Try End Sub Sub Main() A.Start() B.Start() C.Start() End Sub
End Module
</source>