mik*_*ike 3 c# multithreading winforms
我已经开始在c#中使用线程,但现在需要帮助,这是我的代码:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
DoCount();
}
public void DoCount()
{
for (int i = 0; i < 100; i++)
{
objTextBox.Text = i.ToString();
Thread.Sleep(100);
}
}
}
Run Code Online (Sandbox Code Playgroud)
它是一个简单的胜利形式与文本框,我想看到"计数",但正如你在我的代码中看到的,文本框显示我99,它计数到99然后显示..我会想,我必须在一个新的线程中管理这个,但不知道如何!
使用BackgroundWorker.MSDN上有BackgroundWorker概述.
以下是代码的外观示例:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
BackgroundWorker backgroundWorker = (BackgroundWorker)sender;
for (int i = 0; i < 100; i++)
{
backgroundWorker.ReportProgress(i);
Thread.Sleep(100);
}
}
private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
textBox1.Text = e.ProgressPercentage.ToString();
}
private void button1_Click(object sender, EventArgs e)
{
backgroundWorker1.RunWorkerAsync();
}
}
Run Code Online (Sandbox Code Playgroud)
其他说明:
这可能是您正在寻找的:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
DoCount();
}
public void DoCount()
{
Thread t = new Thread(new ThreadStart(delegate
{
for (int i = 0; i < 100; i++)
{
this.Invoke((Action) delegate { objTextBox.Text = i.ToString(); });
Thread.Sleep(1000);
}
}));
t.IsBackground = true;
t.Start();
}
}
Run Code Online (Sandbox Code Playgroud)
笔记
| 归档时间: |
|
| 查看次数: |
8372 次 |
| 最近记录: |