-1
這是我的代碼,但label1在label2之前先運行?我想要的是在各自的線程上同時運行label1和label2。我使用線程的方式,但它不能訪問控制,除了在它自己創建的線程中。所以在這段代碼中,當我創建如下的實例時:Slave s1 = new Slave(label1); Slave s2 = new Slave(label2);
它會自動開始移動這兩個標籤,但不是。使用backgroundworker同時向下移動2個標籤
public class Slave
{
private Label l;
private BackgroundWorker bw;
public Slave(Label l)
{
this.l = l;
bw = new BackgroundWorker();
bw.WorkerReportsProgress = true;
bw.DoWork+=new DoWorkEventHandler(worknow);
bw.ProgressChanged += new ProgressChangedEventHandler(update);
bw.RunWorkerAsync();
}
private void worknow(object sender, DoWorkEventArgs e)
{
BackgroundWorker b = sender as BackgroundWorker;
b.ReportProgress(1);
}
private void update(object sender, ProgressChangedEventArgs e)
{
for(int x=0; x<20;x++)
{
l.Top += 10;
System.Threading.Thread.Sleep(100);
}
}
}
當您搜索收到的例外消息的確切文本時,您發現了什麼?您是否嘗試納入您找到的任何建議?你做了什麼事? – 2014-12-07 01:59:08
我編輯了你的標題。請參閱:「[應該在其標題中包含」標籤「](http://meta.stackexchange.com/questions/19190/)」,其中的共識是「不,他們不應該」。 – 2014-12-07 02:01:38
另一個線程可以修改GUI元素:http://stackoverflow.com/questions/527947/invoke-required – 2014-12-07 02:02:31