<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>多线程 on LeafCxy's Blog</title><link>https://leafcxy.github.io/tags/%E5%A4%9A%E7%BA%BF%E7%A8%8B/</link><description>Recent content in 多线程 on LeafCxy's Blog</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Thu, 24 Jul 2025 05:08:14 +0000</lastBuildDate><atom:link href="https://leafcxy.github.io/tags/%E5%A4%9A%E7%BA%BF%E7%A8%8B/index.xml" rel="self" type="application/rss+xml"/><item><title>WaitCallback</title><link>https://leafcxy.github.io/posts/2025-07-24-11/</link><pubDate>Thu, 24 Jul 2025 05:08:14 +0000</pubDate><guid>https://leafcxy.github.io/posts/2025-07-24-11/</guid><description>&lt;p&gt;&lt;code&gt;WaitCallback&lt;/code&gt; 委托一般用于将方法异步执行到线程池线程上。线程池是一组可重用的线程，可以在需要时分配线程来执行工作，而不需要创建新的线程。使用线程池可以避免频繁地创建和销毁线程，从而提高应用程序的性能和可伸缩性。&lt;/p&gt;
&lt;!-- more --&gt;
&lt;p&gt;通常，您可以使用 &lt;code&gt;ThreadPool.QueueUserWorkItem&lt;/code&gt; 方法将方法异步执行到线程池线程上，并使用 &lt;code&gt;WaitCallback&lt;/code&gt; 委托来表示要执行的方法。在这种情况下，&lt;code&gt;WaitCallback&lt;/code&gt; 委托的参数是一个 &lt;code&gt;object&lt;/code&gt; 类型的对象，该对象可以包含要传递给方法的数据。&lt;/p&gt;
&lt;p&gt;例如，以下代码演示了如何使用 &lt;code&gt;WaitCallback&lt;/code&gt; 委托和 &lt;code&gt;ThreadPool.QueueUserWorkItem&lt;/code&gt; 方法：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;WaitCallback callback = &lt;span style="color:#66d9ef"&gt;new&lt;/span&gt; WaitCallback(MyMethod);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;ThreadPool.QueueUserWorkItem(callback, data);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;private&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;void&lt;/span&gt; MyMethod(&lt;span style="color:#66d9ef"&gt;object&lt;/span&gt; state)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;// 执行一些工作&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;在这个例子中，&lt;code&gt;MyMethod&lt;/code&gt; 方法将在线程池线程上异步执行。&lt;code&gt;data&lt;/code&gt; 对象将作为 &lt;code&gt;state&lt;/code&gt; 参数传递给 &lt;code&gt;MyMethod&lt;/code&gt; 方法。&lt;/p&gt;</description></item></channel></rss>