چگونه می توانم Event مورد نظر خود را ایجاد کنم؟
متد هایی به یک متغیر سراسری دسترسی دارند و مقدار این متغیر توسط متد های بزرگ و بزرگ تر میشود
حال میخوام ایونتی تعریف کنم که اگر طول متغییر مثلا به 1000 رسید فعال بشه
نقل قول: چگونه می توانم Event مورد نظر خود را ایجاد کنم؟
سلام شاید این لینک به نوشتن Custom Events در C# کمک کنه
1 ضمیمه
نقل قول: چگونه می توانم Event مورد نظر خود را ایجاد کنم؟
چرا از if استفاده نمی کنید؟
هم می تونید داخل event مربوطه if بزارید هم وقتی که event رو call می کنید قبل از call کردن if بزارید.
نقل قول: چگونه می توانم Event مورد نظر خود را ایجاد کنم؟
تشخیص اینکه طول متغیر رشته ای به عدد x رسیده مهم هست
روش بهتر؟
نقل قول: چگونه می توانم Event مورد نظر خود را ایجاد کنم؟
سلام .
نقل قول:
تشخیص اینکه طول متغیر رشته ای به عدد x رسیده مهم هست
با یه if میشه این کار رو کرد . خاصیت Lenght متغیر های رشته ای طولش رو بر میگردونه . مثل این :
if (Var_String.Lenght == 1000)
{
command
}
موفق باشید ..............
نقل قول: چگونه می توانم Event مورد نظر خود را ایجاد کنم؟
این که با if میشه تشخیص داد رو منم میدونم
اگر از If استفاده بشه مجبورم در قسمت های مختلف برنامه این if رو بزارم که تعداد کپی ها زیاد میشه
با توجه به اینکه نمیشه پیش بینی کرد که کجای متد روی بزرگ کردن رشته تاثیرات زیاد داره
نقل قول: چگونه می توانم Event مورد نظر خود را ایجاد کنم؟
event که بارها نوشته نمی شه که کپی ها زیاد بشه!
if رو داخل خود event بزارید. :متفکر:
نقل قول: چگونه می توانم Event مورد نظر خود را ایجاد کنم؟
نقل قول:
نوشته شده توسط
saed2006
متد هایی به یک متغیر سراسری دسترسی دارند و مقدار این متغیر توسط متد های بزرگ و بزرگ تر میشود
حال میخوام ایونتی تعریف کنم که اگر طول متغییر مثلا به 1000 رسید فعال بشه
۱. به استفاده از متغییرهایه سراسری برنامهنویسی گفته نمیشه.
۲.به جایه کار با یک متغییر، یک کلاس تعریف کنید، و با استفاده از متدهایه پابلیک از هرجایه دیگر قبل از اینکه به متغییر پرایوت مقدار عوض بشه از داخل همان کلاس مدیریت کنید.
مشکلی بود کدتان را بفرستید درستش کنیم.
نقل قول: چگونه می توانم Event مورد نظر خود را ایجاد کنم؟
public class ValueChangedEventArgs : EventArgs
{
private int _value;
public int Value { get { return this._value;} }
public ValueChangedEventArgs(int value)
{
this._value = value;
}
}
public delegate void ValueChangedEvendHandler(object sender, ValueChangedEventArgs e);
public class myInt
{
private int _myGlobalint;
public int myGlobalint
{
get { return _myGlobalint;}
set
{
_myGlobalint = value;
onValueChanged(new ValueChangedEventArgs(value));
}
}
public event ValueChangedEvendHandler ValueChanged;
protected virtual void onValueChanged(ValueChangedEventArgs e)
{
ValueChanged(this, e);
}
}
myInt ii;
public Form1()
{
InitializeComponent();
ii = new myInt();
ii.ValueChanged += new ValueChangedEvendHandler(ii_ValueChanged);
}
void ii_ValueChanged(object sender, ValueChangedEventArgs e)
{
if(e.Value == 1000)
//Do SomeThing
}
نقل قول: چگونه می توانم Event مورد نظر خود را ایجاد کنم؟
نقل قول:
نوشته شده توسط
exlord
public class ValueChangedEventArgs : EventArgs
{
private int _value;
public int Value { get { return this._value;} }
public ValueChangedEventArgs(int value)
{
this._value = value;
}
}
public delegate void ValueChangedEvendHandler(object sender, ValueChangedEventArgs e);
public class myInt
{
private int _myGlobalint;
public int myGlobalint
{
get { return _myGlobalint;}
set
{
_myGlobalint = value;
onValueChanged(new ValueChangedEventArgs(value));
}
}
public event ValueChangedEvendHandler ValueChanged;
protected virtual void onValueChanged(ValueChangedEventArgs e)
{
ValueChanged(this, e);
}
}
myInt ii;
public Form1()
{
InitializeComponent();
ii = new myInt();
ii.ValueChanged += new ValueChangedEvendHandler(ii_ValueChanged);
}
void ii_ValueChanged(object sender, ValueChangedEventArgs e)
{
if(e.Value == 1000)
//Do SomeThing
}
میشه در مورد کارکرد کدها توضیح مختصری بدین
نقل قول: چگونه می توانم Event مورد نظر خود را ایجاد کنم؟
:متفکر:
نقل قول:
نوشته شده توسط
اَرژنگ
۱. به استفاده از متغییرهایه سراسری برنامهنویسی گفته نمیشه.
۲.به جایه کار با یک متغییر، یک کلاس تعریف کنید، و با استفاده از متدهایه پابلیک از هرجایه دیگر قبل از اینکه به متغییر پرایوت مقدار عوض بشه از داخل همان کلاس مدیریت کنید.
مشکلی بود کدتان را بفرستید درستش کنیم.
من از یک کلاس استفاده کردم و وقتی متغیر ست میشه چک میکنه که طولش بزرگتر n ]ست یا نه
اما فکر میکنم این چک کردن های زیاد , اصولی نباشه
وقتی event تعریف میکنیم به ازای هر تغییر در متغیر طولش چک میشه؟
اینطوری که تعداد چک کردن ها زیاد میشه:اشتباه:
نقل قول: چگونه می توانم Event مورد نظر خود را ایجاد کنم؟
نقل قول:
نوشته شده توسط
saed2006
:متفکر:
من از یک کلاس استفاده کردم و وقتی متغیر ست میشه چک میکنه که طولش بزرگتر n ]ست یا نه
اما فکر میکنم این چک کردن های زیاد , اصولی نباشه
وقتی event تعریف میکنیم به ازای هر تغییر در متغیر طولش چک میشه؟
اینطوری که تعداد چک کردن ها زیاد میشه:اشتباه:
تعداد چک کردنها با تعداد عوض شدن مقدار مساوی میماند،
دیگر مشکل چیه؟
نقل قول: چگونه می توانم Event مورد نظر خود را ایجاد کنم؟
حتی وقتی از even استفاده کنیم؟
نقل قول: چگونه می توانم Event مورد نظر خود را ایجاد کنم؟
نقل قول:
نوشته شده توسط
saed2006
حتی وقتی از even استفاده کنیم؟
بالاخره باید مقایسه انجام بشه، بدونه مقایسه که نمیشه ایونت را بالا آورد.
یکجوری event را بالاخره باید بالا آورد. اگر چیزه متفاوتی در نظرتان است بگید.
نقل قول: چگونه می توانم Event مورد نظر خود را ایجاد کنم؟
مثلا توی تشخیص وقوع وقفه در سیستم عامل دو روش وجود داره یکی چک کردن متوالی وقفه و تشخیص ان یکی هم ایجاد interup در روند اجرای برنامه و تشخیص وقوع وقفه
راه حل اول زمان گیر و بی فایده هست یعنی مرتبا چک میشه و راه دوم اصولی چون فقط یک بار اونم وقتی وقفه ایجاد شد اتفاق میافته حالا من نمیدونم event حالت اول هست یا دوم
نقل قول: چگونه می توانم Event مورد نظر خود را ایجاد کنم؟
نقل قول:
نوشته شده توسط
saed2006
مثلا توی تشخیص وقوع وقفه در سیستم عامل دو روش وجود داره یکی چک کردن متوالی وقفه و تشخیص ان یکی هم ایجاد interup در روند اجرای برنامه و تشخیص وقوع وقفه
راه حل اول زمان گیر و بی فایده هست یعنی مرتبا چک میشه و راه دوم اصولی چون فقط یک بار اونم وقتی وقفه ایجاد شد اتفاق میافته حالا من نمیدونم event حالت اول هست یا دوم
اگر بخواهیم به مشاهبتا نگاه کنیم . ایونت را مانند اینترراپت ببینید، ولی اینکه که این اینترراپت اجرا بشه بازهم به مقایسه شدن میانجامه، حالا دو روش میشه استفاده کرد :
یک ایونت که هر بار مقدار عوض میشه بالا بیاد (اینترراپت کنه) و یا اینکه
یک ایونت که هر بار مقدار عوض میشه و از ۱۰۰ به بالا بود بالا بیاد (اینترراپت کنه) .
استفاده از ایونتها و شیگرائی جایه بخصوصی دارد، اینطوری که من احساس میکن شرائطی که شما دارید استفاده از برنامهنویسی شیگرا را نقض میکنه، ممکنه که اصل چیزی که لازم دارید نباید به شکل شیگرائی پیاده بشه. شیگرائی را برایه حل همه حالتها همیشه نمیشه استفاده کرد.