C# 里想要点了按钮后出现一个显示在处理的图片或进度条,怎么写? 15
我的c#点了按钮后可以成功处理任务。但是点了按钮后界面不太好看,显示无响应那种画面。一直到处理完了才可以再动。如果想要在点了按钮后显示一个GIF动图,或者进度条,任务结束...
我的c#点了按钮后可以成功处理任务。但是点了按钮后界面不太好看,显示无响应那种画面。一直到处理完了才可以再动。如果想要在点了按钮后显示一个GIF动图,或者进度条,任务结束后图片或进度条消失,需要怎样写?
private void button1_Click(object sender, RoutedEventArgs e)
{
.........
} 展开
private void button1_Click(object sender, RoutedEventArgs e)
{
.........
} 展开
1个回答
展开全部
//把处理代码放在另一个线程中运行就不会卡住当前窗口了。
//在窗口添加一个backgroundWorker组件,可用于多线程处理。如下面代码:
private void button1_Click(object sender, EventArgs e) {
backgroundWorker1.RunWorkerAsync(); //启动线程
}
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)//线程中运行的事务
{
for (int i = 0; i < 9999; i++) Console.WriteLine(i);
}
private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)//事务运行完成时
{
Console.WriteLine("完成");
}
//在窗口添加一个backgroundWorker组件,可用于多线程处理。如下面代码:
private void button1_Click(object sender, EventArgs e) {
backgroundWorker1.RunWorkerAsync(); //启动线程
}
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)//线程中运行的事务
{
for (int i = 0; i < 9999; i++) Console.WriteLine(i);
}
private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)//事务运行完成时
{
Console.WriteLine("完成");
}
追问
我是在用WPF,工具栏里的backgroundWorker组件是灰色的不可用
追答
//再试试另一种线程处理方法,wpf没用过,也不清楚行不行
public delegate void deCompleteThread(); //委托
private void treadControlPropertys()//处理窗体控件属性
{
pictureBox1.Hide();
}
private void button1_Click(object sender, EventArgs e) {
//启动线程
pictureBox1.Show(); //进度动态图片
System.Threading.Thread t = new System.Threading.Thread(new System.Threading.ThreadStart(treat));
t.Start();
}
private void treat()//线程中运行的事务
{
for (int i = 0; i < 9999; i++) Console.WriteLine(i);
Invoke(new deCompleteThread(treadControlPropertys)); //由于在另一个线程中无法直接访问窗体控件
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询