ThreadPool.QueueUserWorkItem 方法 (WaitCallback)
2010-04-19 09:06
375 查看
说明:将方法排入队列以便执行,WaitCallback,表示要执行的方法。如果将方法成功排入队列,则为 true;否则为 false。
示例:addtest方法需要比较长的时间来响应,因此在button1_Click被点击以后,程序会失去响应,使用ThreadPool.QueueUserWorkItem 后,页面会继续响应其他时间,等addtest执行结束后,响应结果。
<Window x:Class="WpfAppThread.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="300" Width="300">
<Grid>
<Button Height="23" HorizontalAlignment="Left" Margin="9,23,0,0" Name="button1" VerticalAlignment="Top" Width="75" Click="button1_Click">ButtonOne</Button>
<Button Height="23" Margin="102,23,101,0" Name="button2" VerticalAlignment="Top" Click="button2_Click">ButtonTwo</Button>
</Grid>
</Window>
private void button1_Click(object sender, RoutedEventArgs e)
{
ThreadPool.QueueUserWorkItem(new WaitCallback(addtest),"Testaa");
//addtest();
}
private void addtest(object aa)
{
long result=0;
for (int i = 0; i < 1000000000; i++)
{
result += i;
}
MessageBox.Show(result.ToString()+aa.ToString());
}
private void button2_Click(object sender, RoutedEventArgs e)
{
MessageBox.Show("two");
}
示例:addtest方法需要比较长的时间来响应,因此在button1_Click被点击以后,程序会失去响应,使用ThreadPool.QueueUserWorkItem 后,页面会继续响应其他时间,等addtest执行结束后,响应结果。
<Window x:Class="WpfAppThread.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="300" Width="300">
<Grid>
<Button Height="23" HorizontalAlignment="Left" Margin="9,23,0,0" Name="button1" VerticalAlignment="Top" Width="75" Click="button1_Click">ButtonOne</Button>
<Button Height="23" Margin="102,23,101,0" Name="button2" VerticalAlignment="Top" Click="button2_Click">ButtonTwo</Button>
</Grid>
</Window>
private void button1_Click(object sender, RoutedEventArgs e)
{
ThreadPool.QueueUserWorkItem(new WaitCallback(addtest),"Testaa");
//addtest();
}
private void addtest(object aa)
{
long result=0;
for (int i = 0; i < 1000000000; i++)
{
result += i;
}
MessageBox.Show(result.ToString()+aa.ToString());
}
private void button2_Click(object sender, RoutedEventArgs e)
{
MessageBox.Show("two");
}
相关文章推荐
- ThreadPool.QueueUserWorkItem 方法 (WaitCallback)
- 使用线程池的方法(非TPL)-ThreadPool.QueueUserWorkItem
- 一个关于WaitCallback和ThreadPool.QueueUserWorkItem的小例子
- ThreadPool.QueueUserWorkItem 方法 (WaitCallback, Object)
- ThreadPool.QueueUserWorkItem
- C# ThreadPool.QueueUserWorkItem典型案例详解
- ThreadPool.QueueUserWorkItem引发的血案,线程池异步非正确姿势导致程序闪退的问题
- ThreadPool.QueueUserWorkItem的性能问题
- ThreadPool.QueueUserWorkItem的性能问题
- ThreadPool.QueueUserWorkItem的性能问题
- 难道调用ThreadPool.QueueUserWorkItem()的时候,真是必须调用Thread.Sleep(N)吗?
- ThreadPool.QueueUserWorkItem的性能问题
- ThreadPool.QueueUserWorkItem的性能问题
- 多线程实现Thread.Start()与ThreadPool.QueueUserWorkItem两种方式对比
- ThreadPool.QueueUserWorkItem(将任务添加进线程池)
- [Multithreading]关于ThreadPool.QueueUserWorkItem
- WPF使用ThreadPool.QueueUserWorkItem线程池防界面假死
- 多线程操作(ThreadPool.QueueUserWorkItem
- ThreadPool.QueueUserWorkItem(new WaitCallback(oAlpha.Beta), new SomeState(0));
- 在 .NET Web 开发中,使用 ThreadPool.QueueUserWorkItem 异步地处理耗时操作