<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://www.vbex.ru/index.php?action=history&amp;feed=atom&amp;title=VB.Net_Tutorial%2FThread%2FThreadPool</id>
		<title>VB.Net Tutorial/Thread/ThreadPool - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://www.vbex.ru/index.php?action=history&amp;feed=atom&amp;title=VB.Net_Tutorial%2FThread%2FThreadPool"/>
		<link rel="alternate" type="text/html" href="http://www.vbex.ru/index.php?title=VB.Net_Tutorial/Thread/ThreadPool&amp;action=history"/>
		<updated>2026-04-05T22:03:39Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://www.vbex.ru/index.php?title=VB.Net_Tutorial/Thread/ThreadPool&amp;diff=3586&amp;oldid=prev</id>
		<title> в 16:40, 26 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://www.vbex.ru/index.php?title=VB.Net_Tutorial/Thread/ThreadPool&amp;diff=3586&amp;oldid=prev"/>
				<updated>2010-05-26T16:40:30Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 16:40, 26 мая 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
			</entry>

	<entry>
		<id>http://www.vbex.ru/index.php?title=VB.Net_Tutorial/Thread/ThreadPool&amp;diff=3587&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://www.vbex.ru/index.php?title=VB.Net_Tutorial/Thread/ThreadPool&amp;diff=3587&amp;oldid=prev"/>
				<updated>2010-05-26T12:56:04Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==Get Available Threads in a ThreadPool and Get Max Threads in a ThreadPool==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;vbnet&amp;quot;&amp;gt;Imports System.Threading&lt;br /&gt;
public class Test&lt;br /&gt;
   public Shared Sub Main&lt;br /&gt;
               Dim msg As String : Dim i As Integer&lt;br /&gt;
               Dim job As New MyJob()&lt;br /&gt;
               For i = 1 To 5&lt;br /&gt;
                       ThreadPool.QueueUserWorkItem(New WaitCallback(AddressOf job.MyTask), i)&lt;br /&gt;
               Next&lt;br /&gt;
               Thread.Sleep(2000)&lt;br /&gt;
   End Sub&lt;br /&gt;
End class&lt;br /&gt;
&lt;br /&gt;
Public Class MyJob&lt;br /&gt;
       Private Msg As String&lt;br /&gt;
       Dim availWorker As Integer = 0 : Dim maxWorker As Integer = 0&lt;br /&gt;
       Dim availCPT As Integer = 0 : Dim maxCPT As Integer = 0&lt;br /&gt;
       &lt;br /&gt;
       Public Sub MyTask(ByVal ThreadStateData As Object)&lt;br /&gt;
               Console.WriteLine(&amp;quot;Performing Task. Data Passed: &amp;quot; &amp;amp; ThreadStateData)&lt;br /&gt;
               ThreadPool.GetAvailableThreads(availWorker, availCPT)&lt;br /&gt;
               ThreadPool.GetMaxThreads(maxWorker, maxCPT)&lt;br /&gt;
               Console.WriteLine(&amp;quot;--Available Worker Threads: &amp;quot; &amp;amp; availWorker.ToString())&lt;br /&gt;
               Console.WriteLine(&amp;quot;--Maximum Worker Threads: &amp;quot; &amp;amp; maxWorker.ToString())&lt;br /&gt;
               Console.WriteLine(&amp;quot;--Available Completion Port Threads: &amp;quot; &amp;amp; availCPT.ToString())&lt;br /&gt;
               Console.WriteLine(&amp;quot;--Maximum Completion Port Threads: &amp;quot; &amp;amp; maxCPT)&lt;br /&gt;
       End Sub&lt;br /&gt;
End Class&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;pre class=codeResult&amp;gt;Performing Task. Data Passed: 1&lt;br /&gt;
--Available Worker Threads: 24&lt;br /&gt;
--Maximum Worker Threads: 25&lt;br /&gt;
--Available Completion Port Threads: 1000&lt;br /&gt;
--Maximum Completion Port Threads: 1000&lt;br /&gt;
Performing Task. Data Passed: 2&lt;br /&gt;
--Available Worker Threads: 24&lt;br /&gt;
--Maximum Worker Threads: 25&lt;br /&gt;
--Available Completion Port Threads: 1000&lt;br /&gt;
--Maximum Completion Port Threads: 1000&lt;br /&gt;
Performing Task. Data Passed: 3&lt;br /&gt;
--Available Worker Threads: 24&lt;br /&gt;
--Maximum Worker Threads: 25&lt;br /&gt;
--Available Completion Port Threads: 1000&lt;br /&gt;
--Maximum Completion Port Threads: 1000&lt;br /&gt;
Performing Task. Data Passed: 4&lt;br /&gt;
--Available Worker Threads: 24&lt;br /&gt;
--Maximum Worker Threads: 25&lt;br /&gt;
--Available Completion Port Threads: 1000&lt;br /&gt;
--Maximum Completion Port Threads: 1000&lt;br /&gt;
Performing Task. Data Passed: 5&lt;br /&gt;
--Available Worker Threads: 24&lt;br /&gt;
--Maximum Worker Threads: 25&lt;br /&gt;
--Available Completion Port Threads: 1000&lt;br /&gt;
--Maximum Completion Port Threads: 1000&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Thread Pool==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;vbnet&amp;quot;&amp;gt;Imports System.Threading&lt;br /&gt;
Module Module1&lt;br /&gt;
    Sub TaskA(ByVal state As Object)&lt;br /&gt;
        Dim I As Integer&lt;br /&gt;
        For I = 0 To 250&lt;br /&gt;
            System.Console.Write(&amp;quot;A&amp;quot;)&lt;br /&gt;
        Next&lt;br /&gt;
        Thread.Sleep(3000)&lt;br /&gt;
        CType(state, AutoResetEvent).Set()&lt;br /&gt;
    End Sub&lt;br /&gt;
    Sub TaskB(ByVal state As Object)&lt;br /&gt;
        Dim I As Integer&lt;br /&gt;
        For I = 0 To 250&lt;br /&gt;
            System.Console.Write(&amp;quot;B&amp;quot;)&lt;br /&gt;
        Next&lt;br /&gt;
        Thread.Sleep(3000)&lt;br /&gt;
        CType(state, AutoResetEvent).Set()&lt;br /&gt;
    End Sub&lt;br /&gt;
    Sub TaskC(ByVal state As Object)&lt;br /&gt;
        Dim I As Integer&lt;br /&gt;
        For I = 0 To 250&lt;br /&gt;
            System.Console.Write(&amp;quot;C&amp;quot;)&lt;br /&gt;
        Next&lt;br /&gt;
        Thread.Sleep(3000)&lt;br /&gt;
        CType(state, AutoResetEvent).Set()&lt;br /&gt;
    End Sub&lt;br /&gt;
    Sub Main()&lt;br /&gt;
        Dim AIsDone As New AutoResetEvent(False)&lt;br /&gt;
        Dim BIsDone As New AutoResetEvent(False)&lt;br /&gt;
        Dim CIsDone As New AutoResetEvent(False)&lt;br /&gt;
        ThreadPool.QueueUserWorkItem(New WaitCallback(AddressOf TaskA), AIsDone)&lt;br /&gt;
        ThreadPool.QueueUserWorkItem(New WaitCallback(AddressOf TaskB), BIsDone)&lt;br /&gt;
        ThreadPool.QueueUserWorkItem(New WaitCallback(AddressOf TaskC), CIsDone)&lt;br /&gt;
        Dim ThreadCount, ThreadPorts As Integer&lt;br /&gt;
        ThreadPool.GetAvailableThreads(ThreadCount, ThreadPorts)&lt;br /&gt;
        Console.WriteLine(&amp;quot;Thread pool size {0}&amp;quot;, ThreadCount)&lt;br /&gt;
        Console.WriteLine(&amp;quot;Waiting for asynchronous threads to complete.&amp;quot;)&lt;br /&gt;
        AIsDone.WaitOne()&lt;br /&gt;
        Console.WriteLine(&amp;quot;A is done&amp;quot;)&lt;br /&gt;
        BIsDone.WaitOne()&lt;br /&gt;
        Console.WriteLine(&amp;quot;B is done&amp;quot;)&lt;br /&gt;
        CIsDone.WaitOne()&lt;br /&gt;
        Console.WriteLine(&amp;quot;C is done&amp;quot;)&lt;br /&gt;
    End Sub&lt;br /&gt;
End Module&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;pre class=codeResult&amp;gt;Thread pool size 25&lt;br /&gt;
Waiting for asynchronous threads to complete.&lt;br /&gt;
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA&lt;br /&gt;
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA&lt;br /&gt;
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB&lt;br /&gt;
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB&lt;br /&gt;
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB&lt;br /&gt;
BBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC&lt;br /&gt;
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC&lt;br /&gt;
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCA is done&lt;br /&gt;
B is done&lt;br /&gt;
C is done&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>