آموزش هوش مصنوعی از صفر ، بدون پیش‌نیاز آموزش هوش مصنوعی ، از صفر بدون پیش‌نیاز!
🎯 شروع یادگیری
بستن تبلیغات
تسلط کامل بر سی‌شارپ با یک دوره پروژه‌محور

یادگیری سی شارپ از مفاهیم پایه تا پروژه محور: شی‌گرایی، کار با SQL و LINQ، ORMها (Entity Framework)، ساخت پروژه مدیریت رستوران با گزارشات حرفه‌ای و امکانات کامل!

مشاهده بیشتر
SQL Server رو حرفه‌ای یاد بگیر

تو این دوره SQL Server رو از صفر تا پیشرفته یاد می‌گیری! از تراکنش‌ها و طراحی دیتابیس تا Query نویسی حرفه‌ای و پروژه‌های واقعی مثل مدیریت فروش و سیستم مالی. همه چی رو با مثال و تمرین یاد می‌گیری و یه متخصص دیتابیس می‌شی!

مشاهده بیشتر

کار حرفه ای با Thread ها

شرح مختصر پروژه

کار حرفه ای با Thread ها

توضیحات پروژه

کار حرفه ای با Thread ها

پروژه کار حرفه ای با Thread ها

در این برنامه به خوبی می توان اهمیت Thread ها را برای انجام کارهایی که نیاز به همزمانی دارند، درک کرد.

قبل از هرچیز باید فضانام مورد استفاده را به پروژه اضافه نماییم:

using System.Threading;

همانطور که در تصویر مشاهده می شود ابتدا شماره Thread ای که ویندوز به برنامه ما اختصاص داده است نمایش داده می شود. برای اطلاع از این شما از کد زیر استفاده می کنیم:

lblThreadID.Text += AppDomain.GetCurrentThreadId().ToString();

اساس کار این برنامه اجرای یک فرآیند است. این فرآیند عبارت است از ساختن یک شیء از کلاس frmTaskProgress که این شیء از کلاس system.windows.forms مشتق شده و در حقیقت یک فرم است. بعد از نشان دادن این فرم درون حلقه ای که ده بار تکرار می شود 10 واحد به مقدار حال حاضر ProgressBar موجود در این فرم اضافه می کند و بعد از هربار اضافه کردن به مدت 500میلی ثانیه عملیات را متوقف کرده و سپس 10 واحد بعدی را اضافه می نماید. هنگامی که مقدار ProgressBar به 100 برسد عملیات تکمیل شده و فرآیند اتمام پذیرفته است و فرم نمایش داده شده، از بین خواهد رفت.

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

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

2. حال می خواهیم با زدن دکمه دوم فرآیند را برروی یک Thread جدید اجرا کنیم. برای اینکار نیاز داریم از یک Delegate را تعریف کنیم و با آن Delegate به تابعی اشاره می کنیم که این تابع همان فرآیند است اما برروی یک Thread جدید :

delegate void TaskDelegate();

TaskDelegate td = new TaskDelegate(new ThreadStart(TheLongRunningTask));

حال کافیست این Delegate را فراخوانی کنیم:

td.BeginInvoke(null, null);

حال سعی کنید پنجره اصلی را تکان دهید. می بینیم که این عمل امکان پذیر است. حالا اگر در هنگامی که فرآیند در حال اجراست اقدام به بستن برنامه اصلی بکنیم هر دو پنجره با هم بسته می شوند و فرآیند دیگر ادامه پیدا نمی کند.

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

1402/11/04 13847 1486
رمز عبور : tahlildadeh.com یا www.tahlildade.com
نظرات شما

نظرات خود را ثبت کنید...