PDA

View Full Version : استفاده از تایمر در کنسول (؟)



hosseinam1370
شنبه 28 شهریور 1394, 08:51 صبح
دوستان من میخام از تایمر در کنسول استفاده کنم ، ولی نمی دونم چطور باید رخداد tik رو بنویسم ، میشه یه راهنمایی کنید؟!!

namespace DateTime
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine(System.DateTime.Now);



Timer t = new Timer();
t.Interval = 1000;
t.Start();


Console.ReadKey();
}
}
}



با تشکر.

Javad_raouf
شنبه 28 شهریور 1394, 10:48 صبح
System.Windows.Forms.Timer t = new System.Windows.Forms.Timer();
t.Interval = 1000;
t.Tick += t_Tick;
t.Start();

static void t_Tick(object sender, EventArgs e)
{
Console.WriteLine("Ticked");
}

hosseinam1370
شنبه 28 شهریور 1394, 11:52 صبح
دوسته عزیز این خط چیکار میکنه و به این کار چی میگن؟
t.Tick += t_Tick;


با تشکر.

محمد رضا فاتحی
شنبه 28 شهریور 1394, 12:12 عصر
با اجازه دوست عزیزمون
این خط میاد به شئی timer یا همون t رویداد tick رو اختصاص می ده با تابع t_Tick
شما وقتی تو محیط ویژوال یه کنترل مثلا تایمر رو قرار می دید و وقتی روش دابل کلیک می کنید خود ویژوال استدیو بطور خودکار این دستور رو اعمال می کنه ولی اگه بخواین دستی و با کد نویسی اعمال بشه باید این کد نوشته بشه البته هر کنترلی رویدادهای مختص به خودش رو داره

SabaSabouhi
شنبه 28 شهریور 1394, 15:48 عصر
دوستان من میخام از تایمر در کنسول استفاده کنم ، ولی نمی دونم چطور باید رخداد tik رو بنویسم ، میشه یه راهنمایی کنید؟!!

namespace DateTime
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine(System.DateTime.Now);



Timer t = new Timer();
t.Interval = 1000;
t.Start();


Console.ReadKey();
}
}
}



با تشکر.

سلام
چند ماه پیش همچنین پرسشی مطرح شده بود، من نمونه گذاشتم اینجا، اگه جستجو کنی حتماً پیدا می‌شه.

صبا صبوحی

hosseinam1370
شنبه 28 شهریور 1394, 17:41 عصر
System.Windows.Forms.Timer t = new System.Windows.Forms.Timer();
t.Interval = 1000;
t.Tick += t_Tick;
t.Start();

static void t_Tick(object sender, EventArgs e)
{
Console.WriteLine("Ticked");
}




دوسته عزیز جواب نمیده که

System.Windows.Forms.Timer t = new System.Windows.Forms.Timer();
t.Interval = 1000;

t.Tick += t_tick;
t.Start();




Console.ReadKey();
}

private static void t_tick(object sender, EventArgs e)
{
Console.WriteLine("hossein");
}



خانم صبوحی اونم پیدا نشد.


با تشکر.

Javad_raouf
یک شنبه 29 شهریور 1394, 18:46 عصر
آها متوجه شدم
فکر کنم علت اینه که توی کونسول برای یا باید Console.ReadLine(); بزنی تا سیستم وایسته که در اون صورت ترد اصلی منتظر کاربر می مونه که اینتر بزنه
پس در این صورت تایمر اجرا نمیشه چون ترد اصلی منتظره
اگرم که Console.ReadLine(); نزنیم که از برنامه می پره بیرون
بهترین کار برای کونسول استفاده از Task.Run به جای تایمره
اول اینو Using کن

using System.Threading.Tasks;


اینم کد اصلی:

public static void Main(string[] args)
{
var task = Task.Run(() => TimerTick());
Console.ReadLine();
}


public static void TimerTick()
{
while (true)
{
Console.WriteLine("Ticked");


System.Threading.Thread.Sleep(1000);
}
}