問題: 什麼是檢查兩個BackgroundWorkers因爲有值返回true的最佳途徑 或者如果沒有返回true,或者只有1。確定如果兩個BackgroundWorker的字符串返回true
附加信息:
我有兩個BackgroundWorker的當前檢查,看看兩個SQL連接是 有效,根據返回的連接是否成功做出了值。
的代碼如下:
private void btnTestSConnection_Click(object sender, EventArgs e)
{
BackgroundWorker work1 = new BackgroundWorker { WorkerSupportsCancellation = true };
BackgroundWorker work2 = new BackgroundWorker { WorkerSupportsCancellation = true };
work1.RunWorkerCompleted += (item, a) =>
{
//need to figure out this portion
};
work2.RunWorkerCompleted += (item, a) =>
{
//need to figure out this portion
};
work1.DoWork += doWork;
work2.DoWork += doWork;
SourceString.InitialCatalog = txtSSourceDatabase.Text;
work1.RunWorkerAsync(SourceString.ConnectionString);
SourceString.InitialCatalog = txtSSystemDatabase.Text;
work2.RunWorkerAsync(SourceString.ConnectionString);
}
DoWorkEventHandler doWork = (sender, e) =>
{
SqlConnection Connection;
BackgroundWorker worker = sender as BackgroundWorker;
for (int i = 1; (i <= 10); i++)
{
try
{
using (Connection = new SqlConnection((string)e.Argument))
{
Connection.Open();
}
e.Result = true;
}
catch (SqlException c)
{
e.Result = false;
}
}
};
此代碼將會死鎖。不要在UI線程上調用WaitOne()。 –
這是非常真實的。所以在你想做這件事之前,先轉到另一個線程。 –