Visual studio 2010 如何在windows窗体中不阻塞循环
我对.net编程相当陌生,我想得到一些建议。 我正在尝试使用VS2010设计器创建一个简单的客户端GUI应用程序,以创建一个表单,其中我有: 1个组合框(包含可能的命令列表) 1按钮,(用于执行组合框中选择的命令) 1个picturebox(其中显示从服务器应用程序接收的图像) 我能够创建我的客户端应用程序,并在每次按下按钮时从服务器接收的picturebox中显示不同的图像 我想做的是在事件按钮单击中创建一个不阻塞循环,这样,只要客户机combobox命令设置为开始成像,服务器发送的图像就会显示在picturebox中,当客户机combobox命令设置为停止成像时,它就会停止 我不知道该怎么做,因为如果我尝试在事件按钮单击中循环,GUI将变得无响应,并且我没有机会更改组合框中的命令 任何帮助都将不胜感激。 谢谢。这里有一种“便宜”的方法,通过使用BackgroundWorker类的ReportProgress功能来更新GUI。首先在表单上放置BackgroundWorker对象。然后Visual studio 2010 如何在windows窗体中不阻塞循环,visual-studio-2010,visual-c++,.net-4.0,Visual Studio 2010,Visual C++,.net 4.0,我对.net编程相当陌生,我想得到一些建议。 我正在尝试使用VS2010设计器创建一个简单的客户端GUI应用程序,以创建一个表单,其中我有: 1个组合框(包含可能的命令列表) 1按钮,(用于执行组合框中选择的命令) 1个picturebox(其中显示从服务器应用程序接收的图像) 我能够创建我的客户端应用程序,并在每次按下按钮时从服务器接收的picturebox中显示不同的图像 我想做的是在事件按钮单击中创建一个不阻塞循环,这样,只要客户机combobox命令设置为开始成像,服务器发送的图像就会显
private void Form1_Load(object sender, EventArgs e)
{
backgroundWorker1.DoWork += DoWork;
backgroundWorker1.ProgressChanged += UpdateGui;
backgroundWorker1.WorkerReportsProgress = true;
backgroundWorker1.RunWorkerAsync();
}
private void DoWork(object sender, DoWorkEventArgs e)
{
while (true)
{
System.Threading.Thread.Sleep(1000);
backgroundWorker1.ReportProgress(0);
}
}
void UpdateGui(object sender, ProgressChangedEventArgs e)
{
textBox1.Text = DateTime.Now.ToLongTimeString();
}
显示一些相关代码。您可能使用了错误的控件进行选择(为什么是组合框??)。要解决某些问题,我们需要知道在哪里解决;)嗨,我能够通过使用不同的线程实现一个非阻塞循环。我有一个EthThread,其中客户端向服务器请求/接收数据,每次接收到imagePacket时,都会调用PictureRefresh()方法。