PDA

View Full Version : سوال: 1.ايجاد وقفه با رويداد يا كدنويسي؟ 2.توليد شرط رويداد



حسنی نگو بلا بگو
شنبه 23 بهمن 1389, 14:21 عصر
سلام به دوستان عزيز

اين مثال رو در نظر بگيريد:

رويداد: شرط رخ دادن رويداد: دماي پردازنده=30
متد كنترل كننده رويداد: datetime i = date

من تو مثال هايي كه از رويداد ديدم برنامه شرط رويداد رو بررسي مي كنه بعد رويداد رو مثل يك متد فراخواني مي كنه

در اين صورت اين سوال پيش مياد كه : رويداد چه فرقي با متد داره؟ چون فقط متد كنترل كننده تو كدرويداد تعيين ميشه نه شرط

من مي خوام وقتي شرط توليد شد باعث ايجاد وقفه بشه و رويداد فراخواني بشه تا زمان پردازنده تو حلقه ي انتظار وقوع شرط هدر نره

مثلا وقتي كاربر كليدي از صفحه كليد رو فشار مي ده اين وقفه چه طور به اطلاع رويداد مي رسه؟(نحوه ساختن شرط رخ دادن رويداد keydown)

حسنی نگو بلا بگو
شنبه 23 بهمن 1389, 17:38 عصر
بذارين يه جور ديگه بگم

فرض كنيد بارها و تو قسمت هاي مختلف برنامه مقدار متغير i تنظيم ميشه

به جاي اينكه برنامه نويس بخواد هر بار بعد از تغيير متغير، متدي رو فراخواني كنه (گاهي ممكنه يادش بره)، بايد رويدادي بنويسه كه هروقت i تغيير كرد يا هروقت شرط i=1 برآورده شد عملي انجام بده

آيا رويداد قابليت بررسي يك شرط و بعد اجراي كنترل كننده ش رو داره؟
اگه بله چه طور براش شرط رو بنويسيم

Alexia Himmer
شنبه 23 بهمن 1389, 18:55 عصر
عرض سلام خدمت شما دوست عزیز

شما فکر کنم با تعریف متد آشنایی داشته باشی و مشکلت احتمالا با شناخت ماهیت event هستش .

اگه درست متوجه سوال شده باشم می توانید با استفاده از delegates و مفاهیم مربوط به اون پیچیدگی های بیشتری رو ایجاد کنید و دستتون بازتر نگه دارید .

چون در واقع خود event هم یک شکل ساده ای از delegate میشه در نظر داره .
به این صورت که event دارای یک delegate داخلی هستش که می تونه متد ها رو به Invocation List خودش اضافه کنه و زمانی که evevt فعال می شه متدهای Invocation List داخلیش به ترتیب فراخوانی شده و اجرا می شه .

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

حسنی نگو بلا بگو
یک شنبه 24 بهمن 1389, 13:22 عصر
اين كد رو از بحث شیئ گرایی و ایجاد Event(فوری) (http://barnamenevis.org/showthread.php?161588-%D8%B4%DB%8C%D8%A6-%DA%AF%D8%B1%D8%A7%DB%8C%DB%8C-%D9%88-%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF-Event%28%D9%81%D9%88%D8%B1%DB%8C%29) آوردم



public class Class1
{
public event MyClickHandler Click;

protected void OnClick()
{
if (Click != null)
Click(this, new MyClickEventArgs());
}

private void SomeMethod()
{
OnClick();
}
}


public class OtherClass
{
public OtherClass()
{
Class1 Class1Object = new Class1();
Class1Object.Click += new MyClickHandler(Class1Object_Click);
}

void Class1Object_Click(object sender, MyClickEventArgs e)
{
}
}


مي خوام بدونم چه طور برنامه در طول اجراش متوجه رويداد click ميشه
يعني متد onclick كي فراخواني ميشه و كي صداش مي زنه
نمي خوام مدام وقوع رويداد توسط برنامه نويس بررسي شه
آيا بايد يك بار رويداد فعال بشه تا آخر برنامه فعال بمونه؟چه طور اين كار رو بكنم
SomeMethod فقط تعريف شده كي استفاده ميشه؟
برنامه از كجا مي فهمه ماوس كليك كرده؟