C# 将一直工作到Ping过程完成。你能帮我吗?你可以把while循环放在后台工作程序中。在异步调用上设置bacadata。请参阅modified Answer您可能只想将整个db调用放在后台工作线程上,而不是连接到主线程中,然后读取工作线程中的行。我曾尝试使用
C# 将一直工作到Ping过程完成。你能帮我吗?你可以把while循环放在后台工作程序中。在异步调用上设置bacadata。请参阅modified Answer您可能只想将整个db调用放在后台工作线程上,而不是连接到主线程中,然后读取工作线程中的行。我曾尝试使用,c#,C#,将一直工作到Ping过程完成。你能帮我吗?你可以把while循环放在后台工作程序中。在异步调用上设置bacadata。请参阅modified Answer您可能只想将整个db调用放在后台工作线程上,而不是连接到主线程中,然后读取工作线程中的行。我曾尝试使用该代码,但出现了一个错误跨线程操作无效:控件“listBox2”是从创建它的线程以外的线程访问的“是的,您不能访问后台工作线程之外的变量或对象,即您不能直接更新表单控件。您可以收集数据,并在后台工作程序完成后将其作为结果返回。然后从主线程访问结
将一直工作到Ping过程完成。你能帮我吗?你可以把while循环放在后台工作程序中。在异步调用上设置bacadata。请参阅modified Answer您可能只想将整个db调用放在后台工作线程上,而不是连接到主线程中,然后读取工作线程中的行。我曾尝试使用该代码,但出现了一个错误跨线程操作无效:控件“listBox2”是从创建它的线程以外的线程访问的“是的,您不能访问后台工作线程之外的变量或对象,即您不能直接更新表单控件。您可以收集数据,并在后台工作程序完成后将其作为结果返回。然后从主线程访问结果。
private void ProsesSemuaKamera()
{
Stopwatch watch = Stopwatch.StartNew();
Ping ping = new Ping();
PingReply pingreply;
BackgroundWorker BWKamera = new BackgroundWorker();
OleDbConnection kon = new OleDbConnection(koneksi);
OleDbCommand command = kon.CreateCommand();
kon.Open();
string selecturl = "select * from datakamera";
command.CommandText = selecturl;
OleDbDataReader bacadata = command.ExecuteReader();
/* PING Kamera IP */
while (bacadata.Read())
{
pingreply = ping.Send(bacadata["ipadd"].ToString());
BWKamera.WorkerReportsProgress = true;
BWKamera.DoWork += BWKamera_DoWork;
BWKamera.ProgressChanged += BWKamera_ProgressChanged;
BWKamera.RunWorkerAsync(); //error exists here
if (pingreply.Status == IPStatus.Success)
{
listBox1.Items.Add(bacadata["namakamera"].ToString());
if (CaptureSemuaKamera == null)
{
try
{
CaptureSemuaKamera = new Capture(bacadata["urlkamera"].ToString());
}
catch (NullReferenceException ex)
{
MessageBox.Show(ex.Message);
}
}
if (CaptureSemuaKamera != null)
{
Application.Idle += new EventHandler(ProcessFrameSemuaKamera);
}
}
else if (pingreply.Status != IPStatus.Success)
{
listBox2.Items.Add(bacadata["namakamera"].ToString());
}
watch.Stop();
File.AppendAllText(@"D:\Dokumen\Alfon\TA Alfon\Waktu Eksekusi Ping.txt", "Waktu eksekusi ping " + DateTime.Now + " :" + " " + watch.Elapsed.TotalMilliseconds.ToString() + Environment.NewLine);
}
kon.Close();
}
private void BWKamera_DoWork(object sender, DoWorkEventArgs e)
{
for (int i = 1; i <= 1000; i++)
{
BWKamera.ReportProgress(i);
Thread.Sleep(1000);
}
}
private void BWKamera_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
ProgressBarKamera.Value = e.ProgressPercentage;
StatusKamera.Text = "Please Wait...";
}
private void BWKamera_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
StatusKamera.Text = "Done !";
}
OleDbDataReader bacadata = command.ExecuteReader();
BWKamera.WorkerReportsProgress = true;
BWKamera.DoWork += BWKamera_DoWork;
BWKamera.ProgressChanged += BWKamera_ProgressChanged;
BWKamera.RunWorkerAsync(bacadata);
private void BWKamera_DoWork(object sender, DoWorkEventArgs e)
{
OleDbDataReader bacadata = (OleDbDataReader)e.Argument;
while (bacadata.Read())
{
pingreply = ping.Send(bacadata["ipadd"].ToString());