نمایش نتایج 1 تا 14 از 14

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

  1. #1
    کاربر دائمی آواتار رامین مرادی
    تاریخ عضویت
    اردیبهشت 1389
    محل زندگی
    آذربایجان
    پست
    1,961

    Question اجرای همزمان دو task در کنسول سی شارپ

    سلام وقت بخیر دوستان
    یه برنامه دارم که مدام از اینترنت داده میخونه و وقتی اینترنت قطع میشه تو حلقه ای که داره درخواست خوندن میکنه تو حلقه گیر مینه.خطایی هم رخ نمیده فقط گیر میکنه تا داده رو بخونه و وقتی نت وصل میشه دیگه دریافت نمیکنه و تو اون حالت میمونه.
    خب منم اومدم یه قطعه کد برای بررسی وجود اینترنت نوشتم و تو شروع برنامه چک میکنه اگه نت نبود برنامه رو ریستارت میکنم. برای اینکه این دوتا تابع بصورت همزمان اجرا بشن من دستورات زیر رو نوشتم تا وقتی نت قطع شد برنامه رو ریستارت کنه.اما بازم وقتی نت قطع میشه تو حلقه گیر میکنه و این بررسی نت اجرا نمیشه. ممنون میشم بگید اشکال کارم کجاست





    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
    }


  2. #2
    کاربر دائمی آواتار parvizwpf
    تاریخ عضویت
    بهمن 1390
    محل زندگی
    TEH
    پست
    2,919

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

    اینجور برنامه ها باید بره تو دل windows service

  3. #3

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

    خب این دستور چک کردن نت فقط یه بار اجرا میشه اونم ابتدای شروع برنامه... شما باید از یه قطعه کد ایونت بیس (event based) یا بر اساس ایونت استفاده کنین که بدون نیاز به چک کردن شما، خودش اتومات با قطع شدن نت، بلافاصله بیاد و برنامه رو ریستارت کنه (من دقیق این راه حل شمارو متوجه نشدم ریستارت کنه که چی بشه؟؟ فرضا نت همچنان قطعه )
    آخرین ویرایش به وسیله mr.sirwan : پنج شنبه 05 بهمن 1396 در 17:54 عصر

  4. #4
    کاربر دائمی آواتار رامین مرادی
    تاریخ عضویت
    اردیبهشت 1389
    محل زندگی
    آذربایجان
    پست
    1,961

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

    نقل قول نوشته شده توسط mr.sirwan مشاهده تاپیک
    خب این دستور چک کردن نت فقط یه بار اجرا میشه اونم ابتدای شروع برنامه... شما باید از یه قطعه کد ایونت بیس (event based) یا بر اساس ایونت استفاده کنین که بدون نیاز به چک کردن شما، خودش اتومات با قطع شدن نت، بلافاصله بیاد و برنامه رو ریستارت کنه (من دقیق این راه حل شمارو متوجه نشدم ریستارت کنه که چی بشه؟؟ فرضا نت همچنان قطعه )
    خب کاش این راه حل رو بگید چجوری پیاده کنم من بلد نیستم یادم بدید عالی میشه. خب ریستارت هم بخاطر یه منطق خاصه که مشکل ساز نیست. یه مقطع هایی هست که نت لحظه ای قطع میشه تو سرورمون اکثرا هم بخاطر utm مونه که نتونستم علتشو بفهمم گاها هم از طرف ای اس پی هست . وقتی نت قطع میشد تو حلقه ای که داده از نت میخوند گیر میکرد . چون این قطعی لحظه ای هست میخوام ریستارت بشه که به امتمال ۹۰ درصد همون لحظه نت وصل میشه و برنامه از اول اجرا بشه

  5. #5
    کاربر دائمی آواتار رامین مرادی
    تاریخ عضویت
    اردیبهشت 1389
    محل زندگی
    آذربایجان
    پست
    1,961

    نقل قول: اجرای همزمان دو task در کنسول سی شارپ

    دوستان راه حلی ندارن؟

  6. #6
    کاربر دائمی آواتار parvizwpf
    تاریخ عضویت
    بهمن 1390
    محل زندگی
    TEH
    پست
    2,919

    نقل قول: اجرای همزمان دو task در کنسول سی شارپ

    با شی تایمر کار کنید عزیز جان این کارها رو برید داخل سرویس و از تایمر ایتفاده کنید کنسول چیز تمیزی نیست.

  7. #7
    کاربر دائمی آواتار رامین مرادی
    تاریخ عضویت
    اردیبهشت 1389
    محل زندگی
    آذربایجان
    پست
    1,961

    نقل قول: اجرای همزمان دو task در کنسول سی شارپ

    نقل قول نوشته شده توسط parvizwpf مشاهده تاپیک
    با شی تایمر کار کنید عزیز جان این کارها رو برید داخل سرویس و از تایمر ایتفاده کنید کنسول چیز تمیزی نیست.
    از قضا امروز از تایمر استفاده کردم. تایمرشو اشتباه تنضیم کردم nتا کنسول باز شد سرور هنگ کرد
    مجبور شدم ریست کنم.
    باید برم رو همون وب سرویس
    میشه یک وب سرویس رو با یه برنامه یا وب سرویس دیگه ریستارت کرد؟

  8. #8
    کاربر دائمی آواتار parvizwpf
    تاریخ عضویت
    بهمن 1390
    محل زندگی
    TEH
    پست
    2,919

    نقل قول: اجرای همزمان دو task در کنسول سی شارپ

    مگه برنامه ات ویندوزی نیست؟
    من منظورم ویندوز سرویس هست

  9. #9
    کاربر دائمی آواتار رامین مرادی
    تاریخ عضویت
    اردیبهشت 1389
    محل زندگی
    آذربایجان
    پست
    1,961

    نقل قول: اجرای همزمان دو task در کنسول سی شارپ

    نقل قول نوشته شده توسط parvizwpf مشاهده تاپیک
    مگه برنامه ات ویندوزی نیست؟
    من منظورم ویندوز سرویس هست
    منم منظورم همون ویندوز سرویس بود. اشتباه تایپ کردم.
    نه یه ربات بود که برای اعضای شرکت داره سرویس میده و به صورت کنسول نوشته شده. حالا وقتی نت قطع میشه تو قسمتی که ربات داره اطلاعات رو میخونه گیر میکنه. خطا هم نداره. نت هم وصل بشه کارشو ادامه نمیده باید دستی ریستارت کرد. میخواستم تنظیم کنم وقتی نت قطع میشه ریستارت بشه. نت هم لحظه ای قطع میشه. که با یه ریستارت برنامه به راه می افته.

  10. #10
    کاربر دائمی آواتار parvizwpf
    تاریخ عضویت
    بهمن 1390
    محل زندگی
    TEH
    پست
    2,919

    نقل قول: اجرای همزمان دو task در کنسول سی شارپ

    ربات تلگرام رو با چی نوشتید؟

  11. #11
    کاربر دائمی آواتار رامین مرادی
    تاریخ عضویت
    اردیبهشت 1389
    محل زندگی
    آذربایجان
    پست
    1,961

    نقل قول: اجرای همزمان دو task در کنسول سی شارپ

    نقل قول نوشته شده توسط parvizwpf مشاهده تاپیک
    ربات تلگرام رو با چی نوشتید؟
    با NetTelegramBotAPI نوشتم.
    نت قطع بشه تو این کد گیر میکنه. یعنی یه دستور رایت لاین نوشتم که بعد این اجرا میشه که وقتی نت نباشه اجرا نمیشه



    var updates = await bot.MakeRequestAsync(new GetUpdates() { Offset = offcet });
    Console.WriteLine("Update Count is: {0}", updates.Count());


  12. #12
    کاربر دائمی آواتار parvizwpf
    تاریخ عضویت
    بهمن 1390
    محل زندگی
    TEH
    پست
    2,919

    نقل قول: اجرای همزمان دو task در کنسول سی شارپ

    اون لایبرری معرفه با بهتره که توسط robbin muller نوشته شده خودش اینو هندل کرده . بهر حال شما با catch کردن یک پیام میتونید مجدد توی سیکل یه تایمر این رو بررسی کنید. من باتم رو با ویندوز سرویس نوشته ام

  13. #13
    کاربر دائمی آواتار رامین مرادی
    تاریخ عضویت
    اردیبهشت 1389
    محل زندگی
    آذربایجان
    پست
    1,961

    نقل قول: اجرای همزمان دو task در کنسول سی شارپ

    نقل قول نوشته شده توسط parvizwpf مشاهده تاپیک
    اون لایبرری معرفه با بهتره که توسط robbin muller نوشته شده خودش اینو هندل کرده . بهر حال شما با catch کردن یک پیام میتونید مجدد توی سیکل یه تایمر این رو بررسی کنید. من باتم رو با ویندوز سرویس نوشته ام
    میتونیدراهنمایی و اطلاعات بیشتری رو در این مورد برام بگید یا اینجا یا Ramin.mor47@gmail.com ممنون میشم

  14. #14

    نقل قول: اجرای همزمان دو task در کنسول سی شارپ

    نقل قول نوشته شده توسط رامین مرادی مشاهده تاپیک
    با NetTelegramBotAPI نوشتم.
    نت قطع بشه تو این کد گیر میکنه. یعنی یه دستور رایت لاین نوشتم که بعد این اجرا میشه که وقتی نت نباشه اجرا نمیشه



    var updates = await bot.MakeRequestAsync(new GetUpdates() { Offset = offcet });
    Console.WriteLine("Update Count is: {0}", updates.Count());

    مگه داخل حلقه while نیست کداتون؟ خب بصورت دوره ای خودش داره چک میکنه دیگه، یعنی اگه نت به قول شما به صورت لحظه ای قطع بشه حلقه while همچنان به کار خودش ادامه میده، فک نکنم update ی رو هم از دست بده (در این مورد مطمئن نیستم)

تاپیک های مشابه

  1. سوال: اجرای همزمان دو کار در wpf
    نوشته شده توسط تبسم ساینا در بخش WPF
    پاسخ: 1
    آخرین پست: یک شنبه 24 اردیبهشت 1396, 12:20 عصر
  2. نمایش همزمان دو NotifyIcon در سی شارپ
    نوشته شده توسط milad.biroonvand در بخش C#‎‎
    پاسخ: 7
    آخرین پست: دوشنبه 15 دی 1393, 17:43 عصر
  3. اجرای همزمان دو دستور در دلفی با کمک ترد
    نوشته شده توسط ofog_22 در بخش مباحث عمومی دلفی و پاسکال
    پاسخ: 3
    آخرین پست: چهارشنبه 04 مرداد 1391, 17:55 عصر
  4. خطا در اجرای همزمان دو اسکریپت در صفحه
    نوشته شده توسط morteza_naderloo در بخش PHP
    پاسخ: 2
    آخرین پست: پنج شنبه 29 دی 1390, 17:23 عصر
  5. خطا در اجرای همزمان دو اسکریپت در صفحه
    نوشته شده توسط morteza_naderloo در بخش JavaScript و Framework های مبتنی بر آن
    پاسخ: 0
    آخرین پست: چهارشنبه 28 دی 1390, 16:09 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •