متد هایی به یک متغیر سراسری دسترسی دارند و مقدار این متغیر توسط متد های بزرگ و بزرگ تر میشود
حال میخوام ایونتی تعریف کنم که اگر طول متغییر مثلا به 1000 رسید فعال بشه
متد هایی به یک متغیر سراسری دسترسی دارند و مقدار این متغیر توسط متد های بزرگ و بزرگ تر میشود
حال میخوام ایونتی تعریف کنم که اگر طول متغییر مثلا به 1000 رسید فعال بشه
سلام شاید این لینک به نوشتن Custom Events در C# کمک کنه
Kernel Mode Developer
RootKitSMM@Yahoo.com
چرا از if استفاده نمی کنید؟
هم می تونید داخل event مربوطه if بزارید هم وقتی که event رو call می کنید قبل از call کردن if بزارید.
تشخیص اینکه طول متغیر رشته ای به عدد x رسیده مهم هست
روش بهتر؟
سلام .
با یه if میشه این کار رو کرد . خاصیت Lenght متغیر های رشته ای طولش رو بر میگردونه . مثل این :تشخیص اینکه طول متغیر رشته ای به عدد x رسیده مهم هست
if (Var_String.Lenght == 1000)
{
command
}
موفق باشید ..............
این که با if میشه تشخیص داد رو منم میدونم
اگر از If استفاده بشه مجبورم در قسمت های مختلف برنامه این if رو بزارم که تعداد کپی ها زیاد میشه
با توجه به اینکه نمیشه پیش بینی کرد که کجای متد روی بزرگ کردن رشته تاثیرات زیاد داره
event که بارها نوشته نمی شه که کپی ها زیاد بشه!
if رو داخل خود 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
}
حتی وقتی از even استفاده کنیم؟
مثلا توی تشخیص وقوع وقفه در سیستم عامل دو روش وجود داره یکی چک کردن متوالی وقفه و تشخیص ان یکی هم ایجاد interup در روند اجرای برنامه و تشخیص وقوع وقفه
راه حل اول زمان گیر و بی فایده هست یعنی مرتبا چک میشه و راه دوم اصولی چون فقط یک بار اونم وقتی وقفه ایجاد شد اتفاق میافته حالا من نمیدونم event حالت اول هست یا دوم
اگر بخواهیم به مشاهبتا نگاه کنیم . ایونت را مانند اینترراپت ببینید، ولی اینکه که این اینترراپت اجرا بشه بازهم به مقایسه شدن میانجامه، حالا دو روش میشه استفاده کرد :
یک ایونت که هر بار مقدار عوض میشه بالا بیاد (اینترراپت کنه) و یا اینکه
یک ایونت که هر بار مقدار عوض میشه و از ۱۰۰ به بالا بود بالا بیاد (اینترراپت کنه) .
استفاده از ایونتها و شیگرائی جایه بخصوصی دارد، اینطوری که من احساس میکن شرائطی که شما دارید استفاده از برنامهنویسی شیگرا را نقض میکنه، ممکنه که اصل چیزی که لازم دارید نباید به شکل شیگرائی پیاده بشه. شیگرائی را برایه حل همه حالتها همیشه نمیشه استفاده کرد.