حرفه ای: اجرای همزمان دو تسک در کنسول سی شارپ

ساخت وبلاگ
سلام وقت بخیر دوستان
یه برنامه دارم که مدام از اینترنت داده میخونه و وقتی اینترنت قطع میشه تو حلقه ای که داره درخواست خوندن میکنه تو حلقه گیر مینه.خطایی هم رخ نمیده فقط گیر میکنه تا داده رو بخونه و وقتی نت وصل میشه دیگه دریافت نمیکنه و تو اون حالت میمونه.
خب منم اومدم یه قطعه کد برای بررسی وجود اینترنت نوشتم و تو شروع برنامه چک میکنه اگه نت نبود برنامه رو ریستارت میکنم. برای اینکه این دوتا تابع بصورت همزمان اجرا بشن من دستورات زیر رو نوشتم تا وقتی نت قطع شد برنامه رو ریستارت کنه.اما بازم وقتی نت قطع میشه تو حلقه گیر میکنه و این بررسی نت اجرا نمیشه. ممنون میشم بگید اشکال کارم کجاست
static void Main(string[] args)
{
MainAsync().Wait();
}static async Task MainAsync()
{
Task.Run(() => CheckNet());
Task.Run(() => Runwo());
Console.ReadLine();
}
//check internet
public static bool PingTest()
{
System.Net.NetworkInformation.Ping ping = new System.Net.NetworkInformation.Ping();System.Net.NetworkInformation.PingReply pingStatus =
ping.Send(IPAddress.Parse("208.69.34.231"), 1000);if (pingStatus.Status == System.Net.NetworkInformation.IPStatus.Success)
{
return true;
}
else
{
return false;
}
}//print net disconnect
public static async Task CheckNet()
{
if (!PingTest())
{
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("No Internet :(");
Console.WriteLine("the App Restart Ofter 2 Seconds :(");
System.Threading.Thread.Sleep(2000);
ResetMe();}
}
//restart app
static void ResetMe()
{
var fileName = Assembly.GetExecutingAssembly().Location;
System.Diagnostics.Process.Start(fileName);
Environment.Exit(0);
}
public static async Task Runwo()
{
//get internet data
}
برنامه نویس...
ما را در سایت برنامه نویس دنبال می کنید

برچسب : نویسنده : محمد رضا جوادیان programers بازدید : 177 تاريخ : پنجشنبه 5 بهمن 1396 ساعت: 19:51