Imports System Imports System.Threading ' スレッドプールへの過剰な要求 Public Class List2 Delegate Sub ThreadMethodDelegate(state As String) Private Shared threadMethodADelegate As New ThreadMethodDelegate(AddressOf ThreadMethodA) Private Shared threadMethodBDelegate As New ThreadMethodDelegate(AddressOf ThreadMethodB) ' 小さい数にするとデッドロックにならない Private Shared NumberOfWork As Integer = 50 Public Shared Sub Main() Dim j As Integer For j = 1 To NumberOfWork threadMethodADelegate.BeginInvoke(j.ToString(), Nothing, Nothing) Next j Console.ReadLine() End Sub 'Main Private Shared Sub ThreadMethodA(state As String) Console.WriteLine("A:{0}", state) Dim ar As IAsyncResult = threadMethodBDelegate.BeginInvoke(state, Nothing, Nothing) ' ThreadMethodBの終了を待つが、 ' ThreadMethodAでキューがいっぱいのためデッドロックとなる threadMethodBDelegate.EndInvoke(ar) End Sub 'ThreadMethodA Private Shared Sub ThreadMethodB(state As String) Console.WriteLine("B:{0}", state) End Sub 'ThreadMethodB End Class 'List2