همانطور که میدانید، در جاوا کلیدواژهای با نام synchronized وجود دارد که قبلا در «اینلینک» از سایت توضیح داده شده و به احتمال زیاد نیز با آن آشنا هستید! اما اگر بخواهیم از چیزی مشابه همین کلیدواژه در سیشارپ استفاده کنیم، باید به چه صورتی عمل کرد؟!
روش انجام کار
فقط کافیست تا این خاصیت را از طریق [MethodImpl] برای متد تنظیم کنیم؛ به صورت زیر:
1 2 3 4 |
[MethodImpl(MethodImplOptions.Synchronized)] public void SomeMethod() { /* code */ } |
و برای ویژگیها و رویدادها نیز میتوان از آن استفاده کرد:
1 2 3 4 5 6 7 8 |
private int i; public int SomeProperty { [MethodImpl(MethodImplOptions.Synchronized)] get { return i; } [MethodImpl(MethodImplOptions.Synchronized)] set { i = value; } } |
اما توجه داشته باشید که ایونتهای فیلدی (field)، به صورت پیشفرض synchronized هستند؛ ولی ویژگیهای اتوماتیک نیستند:
1 2 |
public int SomeProperty {get;set;} // not synchronized public event EventHandler SomeEvent; // synchronized |
گرچه روش بالا وجود دارد، ولی با اینحال میتوانید از کلیدواژهی lock سیشارپ نیز استفاده کنید.
نظرات ثبت شده بدون دیدگاه