مشکل در کد نویسی برنامه تحت شبکه ب زبان c#
سلام دوستان
برای نوشتن نرم افزار تحت شبکه (سوکت) جهت دریافت داده ها باید متدی ب صورت مداوم فراخوانی شه.
اشکال اینجاست که اگه این متد رو داخل حلقه فراخوانی کنم برنامه ب حالت not responding در میاد. (حلقه رو داخل رویداد یک دکمه فرم مینویسم)
راه دیگه هم استفاده از تایمره ک تو سیستم خودم با interval 7000 خوب کار میکنه اما 7 ثانیه delay ایجاد میشه.
سوال اینه ایا استفاده از تایمر درسته و این که اگه برنامه تو سیستم کند تر اجرا شه با این اینتروال هنگ نکنه؟ اصلا میشه از حلقه استفاده کرد طوری ک برنامه قفل نشه؟
لطفا راهنمایی کنید با تشکر
3 پاسخ
سلام دوست عزیز
راه حل مشکل تو استفاده از thread ها هستش. به این شکل که یه thread میسازی و اون تابعی که حلقه توش هست رو بهش میدی و اونو استارت می کنی هر وقت هم که خواستی اینتروال داشته باشه حلقه ات ترد رو sleep می کنی. با این کار برنامت به کار خودش ادامه میده و تابعی که داری به صورت جداگانه و بدون این که برنامه هنگ کنه کار می کنه. در لینک زیر کارهایی که گفتم به صورت برنامه نشان داده شده است. معرفی thread در C#
بله کار میکنه چون این روش در سطح برنامه پیاده سازی شده و نه در سطح سخت افزار و پردازنده. پس می تونی این برنامه رو روی هر سیستمی که C# رو اجرا می کنه نصب کنی و به راحتی باهاش کار کنی
این روش تو سیستم های تک پردازنده ای و قدیمی یا پردازنده های ک multi threading رو ساپورت نمیکنن کار میکنه؟