PDA

View Full Version : Check thread start



MehdiElexal
یک شنبه 04 آبان 1393, 13:43 عصر
با سلام
چطور میشه متوجه شد ترد در حال اجرا هست start شده یا خیر ؟
من در بازه زمانی خاص تردی رو اجرا میکنم و میبندم اما در حالتی خاص تر میخوام اگه باز بود متوجه شم و ببندمش
با تشکر

plus
یک شنبه 04 آبان 1393, 15:13 عصر
از مشخصه IsAlive مربوط به شی Thread ای که ساختین استفاده کنید.

elahe1393
یک شنبه 04 آبان 1393, 15:21 عصر
delegate void Fesfunc();
Fesfunc threadRead;
Fesfunc fescommand = new Fesfunc(Fescommand);
threadRead = new Fesfunc(Fescommand);
threadRead.BeginInvoke(null, null);
Fescommand کلاس thread هست
اینجور تعریف thread صحیحه؟ چرا بعضی وقتا اینجوری thread میسازند؟ چطور میتونیم این نوع thread رو کنترل کنیم؟ برای باز و بسته کردنش؟
من چون آشنایی کمی با موازی سازی دارم اینارو میپرسم

MehdiElexal
یک شنبه 04 آبان 1393, 17:42 عصر
جناب پلاس من از همین خصوصیت استفاده کردم اما به چک کردن Alive که میرسه دیگه بقیه فرامین اجرا نمیشوند و ترد اصلی شروع به کار نمیکنه

plus
یک شنبه 04 آبان 1393, 20:08 عصر
مشکل احتمالا از کد خودتون هست. IsAlive نباید هیچ وقفه ای در اجرا داشته باشه.

namespace ConsoleApplication1 {
using System;
using System.Threading;
class Program {
static void Main(string[] args)
{
Thread thread = new Thread(new ThreadStart(ThreadStartMethod));
Console.WriteLine("{0:T} Starting thread...", DateTime.Now);
thread.Start();
Console.WriteLine("{0:T} Thread.IsAlive = {1}", DateTime.Now, thread.IsAlive);
Console.WriteLine("{0:T} Waiting for Thread...", DateTime.Now);
thread.Join();
Console.WriteLine("{0:T} Thread.IsAlive = {1}", DateTime.Now, thread.IsAlive);
Console.ReadKey();
}
static void ThreadStartMethod() {
Thread.Sleep(4000);
}
}
}