ورود

View Full Version : سوال در مورد Ria Service



newsoft
جمعه 26 اسفند 1390, 09:29 صبح
RIA Service
میخواستم به شکل سنکرون ارتباط برقرار کنم
یه مثال هم بزنین ممنون می شم

d_derakhshani
دوشنبه 07 فروردین 1391, 10:36 صبح
RIA Service نمی تونه بصورت سنکرون کار کنه(یعنی اینطوری به صورت پیش فرض کار میکنه). اما شما می تونید برنامه تون رو سنکرون کنید.
اول باید بگم سنکرون کردن در سیلورلایت کار اشتباهیه. چون تا زمانی که تمامی کدها اجرا نشه، رندر در سیلورلایت اتفاق نمی افته. به زبان ساده بگم برنامه هنگ میکنه تا فراخوانی سرویس شما به پایان برسه. و این بدترین نوع توسعه نرم افزاره.
برای اینکار تو سیلورلایت از BusyIndicator استفاده میکنن. یعنی هنگام فراخوانی سرویس پروپرتی IsBusy=true قرار میدید و در callback این پروپرتی رو false می کنید. در این صورت اتفاقی که می افته مثل سنکرونه چون تا RIA Service کارش تموم نشده کاربر اجازه انجام کاری رو نداره از طرفی هم برنامه هنگ نمی کنه و از طرف دیگه خیلی کاربر پسند و زیباست.
اما با این اوصاف اگه بازم اسرار دارید که سنکرون کنید باید از System.Threading.ManualResetEvent استفاده کنید. در واقع دارید سنکرون رو شبیه سازی می کنید. یک شی از ManualResetEvent بسازید،در هنگام فراخوانی متد سرویس، متد WaitOne رو صدا بزنید و در callback متد Set رو. اگه چند بار میخاید از شی مورد نظر استفاده کنید متد Reset رو قبل WaitOne فراخوانی کنید.

newsoft
دوشنبه 07 فروردین 1391, 12:17 عصر
با تشکر از شما
خودم هم فهمیدم
http://www.dotnettips.info/2010/07/async-iterators.html