PDA

View Full Version : جلوگیری از قفل شدن برنامه با thread



sg.programmer
سه شنبه 02 تیر 1394, 21:37 عصر
سلام چطوری این برنامه را ترد طراحی کنم که برنامه برای مدتی قفل نگردد؟

برنامه داخل یک تایمر برای هر یک دقیقه عمل پینگ را انجام می دهد تا اتصال اینترنت بررسی گردد


private void timer1_Tick(object sender, EventArgs e)
{
OnlinStatus();
}

private void OnlinStatus()
{
try
{
System.Net.NetworkInformation.Ping ping = new System.Net.NetworkInformation.Ping();
System.Net.NetworkInformation.PingReply pingStatus = ping.Send("google.com");

if (pingStatus.Status == System.Net.NetworkInformation.IPStatus.Success)
{
pic_Internet.Image = EmdadFaraz.Properties.Resources.router_wireless_12 8;

lbl_Connection.Text = "برقرار";
}
else
{
pic_Internet.Image = EmdadFaraz.Properties.Resources.basic1_102_wi_fi_w ireless_router_128;

lbl_Connection.Text = "خطا در ارتباط";

}
}
catch
{

lbl_Connection.Text = "خطا در ارتباط";
}
}

alibilgats
چهارشنبه 03 تیر 1394, 00:11 صبح
سلام.
یه تایمر بذار با Interval=60000
یه BackgroundWorker بذار و این کدها رو بنویس :



private bool connect = false;
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
timer1.Enabled = false;
try
{
System.Net.NetworkInformation.Ping ping = new System.Net.NetworkInformation.Ping();
System.Net.NetworkInformation.PingReply pingStatus = ping.Send("google.com");


if (pingStatus.Status == System.Net.NetworkInformation.IPStatus.Success)
{
connect = true;
}
}
catch{ }
}


private void timer1_Tick(object sender, EventArgs e)
{
backgroundWorker1.RunWorkerAsync();
}


private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
if (connect)
{
pic_Internet.Image = EmdadFaraz.Properties.Resources.router_wireless_12 8;
lbl_Connection.Text = "برقرار";
}
else
{
pic_Internet.Image = EmdadFaraz.Properties.Resources.basic1_102_wi_fi_w ireless_router_128;
lbl_Connection.Text = "خطا در ارتباط";
}
connect = false;
timer1.Enabled = true;
}