‫۱۰ سال و ۶ ماه قبل، شنبه ۲۳ فروردین ۱۳۹۳، ساعت ۱۸:۴۱
با سلام
 SEMANTICSIMILARITYTABLE آیا برای متون فارسی هم کار می‌کند.
من تست کردم نتیجه‌ای برای رکورهایی که با متون فارسی پر شدن بر نمی‌گردونه!  
‫۱۰ سال و ۶ ماه قبل، شنبه ۱۶ فروردین ۱۳۹۳، ساعت ۱۶:۱۲
- پیشنیاز مطالعه قسمت جاری، مطالعه 6 قسمت اول این دوره است.
- «همزمان اجرا میشه»
خیر. متدهای Async واقعی مثل نمونه ارائه شده در EF غیرهمزمان اجرا می‌شوند. یعنی، ترد جاری را آزاد کرده و ASP.NET می‌تواند از آن ترد برای پاسخ دهی به یک درخواست رسیده دیگر استفاده کند.
- «باید منتظر پاسخ از db بمونه»
استفاده از await و async سبب بازنویسی بدنه متد توسط یک state machine در پشت صحنه می‌شوند. یعنی اینطور نیست که روش اجرای آن blocking است و تا رسیدن پاسخ از بانک اطلاعاتی، از این ترد دیگر نمی‌شود استفاده کرد. جایی که await فراخوانی می‌شود، ترد جاری برای استفاده بعدی آزاد خواهد شد. در ادامه مابقی کدها تبدیل به یک IEnumerator می‌شوند که هر دستور آن شامل یک yield return است. هر مرحله که تمام شد، MoveNext این IEnumerator فراخوانی می‌شود تا به مرحله‌ی بعدی برسد. به این روش استفاده از coroutines هم گفته می‌شود که در سی شارپ 5، کامپایلر کار تولید کدهای آن‌را انجام می‌دهد. برای مطالعه بیشتر:
انجام پی در پی اعمال Async به کمک Iterators - قسمت اول  
انجام پی در پی اعمال Async به کمک Iterators - قسمت دوم
- «چون تا فایل آپلود نشه ذخیره آدرس تو db بی معنیه»
ذخیره آدرس هم یک قسمت از کار است و اتفاقا وابسته به سیستم جاری هم نیست. وابسته است به یک بانک اطلاعاتی که خارج از مرزهای سیستم، به صورت مستقل در حال فعالیت است (عموما البته؛ مثلا اگر از SQL Server استفاده می‌شود).
برای ذخیره فایل‌ها در سیستم هم متدهای Async به کلاس Stream در دات نت 4.5 اضافه شده‌اند؛ مثل WriteAsync . در این حالت هم می‌توان از await WriteAsync برای ذخیره اطلاعات و بازهم آزاد کردن ترد جاری استفاده کرد.
‫۱۰ سال و ۶ ماه قبل، شنبه ۱۶ فروردین ۱۳۹۳، ساعت ۱۵:۴۶
سلام؛ اگر 
var model = await db.Books.ToListAsync();
همزمان اجرا میشه  ولی بازم برای return باید منتظر پاسخ از db بمونه! پس اینجا فایده ای نداره؟
مشکل من اینجاست که فکر میکنم این روش تنها برای قسمت هایی بدرد میخوره که به هم وابسته نیستن. برای مثال وقتی یه فایل رو آپلود میکنی و بعد آدرس فایل رو ذخیره کنیم فایده نداره. چون تا فایل آپلود نشه ذخیره آدرس تو db  بی معنیه؟
‫۱۰ سال و ۶ ماه قبل، چهارشنبه ۱۳ فروردین ۱۳۹۳، ساعت ۲۳:۱۱
به روز رسانی
اگر از StructureMap نگارش 3 استفاده کنید، کلیه متدهای EnrichXYZ به DecorateXYZ تبدیل شده‌اند.
‫۱۰ سال و ۶ ماه قبل، شنبه ۹ فروردین ۱۳۹۳، ساعت ۱۸:۲۵
- SynchronizationContext  از دات نت 2 در دسترس است. بنابراین اجازه دهید مصرف کننده از متد Post آن در صورت صلاحدید، در هر جایی که لازم داشت برای ارسال نتیجه‌ی دریافتی به تردی خاص، مثلا ترد UI استفاده کند. در این مورد در مطلب «استفاده از Async و Await در برنامه‌های دسکتاپ» بیشتر بحث شده‌است.
- SynchronizationContext.Current را اگر پیش از آغاز ترد دریافت کنید، به ترد جاری فراخوان اشاره می‌کند. در پایان ترد، می‌توانید از متد Post آن برای بازگشت به ترد قبلی کمک بگیرید.
‫۱۰ سال و ۶ ماه قبل، شنبه ۹ فروردین ۱۳۹۳، ساعت ۱۸:۱۵
سلام
من متد DownloadStringAsync و رویداد مرتبط با آن یعنی DownloadStringCompleted رو تست کردم و به دلیل اینکه متد DownloadStringAsync  را در UI Thread صدا میزدم رویداد DownloadStringCompleted  نیز همیشه در UI Thread فراخوانی میشد.
من در یک پروژه یک کتابخانه درست کرده بودم که یکی از متدها باید کاری رو به صورت Async انجام میداد و وقتی که کار این متد تمام میشد نتیجه را با Raise کردن یک event به اطلاع استفاده کننده میرسوندم.
اما مشکل اینجا بود که به کنترل‌های روی فرم دسترسی نداشتم و داخل این رویداد ابتدا شرط InvokeRequired و سپس Invoke رو نوشته بودم.این کار مشکل رو حل کرده بود.
اما به نظر من این کار درست نیست.چون من در واقع یکسری API نوشته ام و در اختیار برنامه نویسان دیگر گذاشته ام و آنها باید بتوانند کدهای خود را بدون InvokeRequired درون رویداد بنویسند.
آیا راهی هست که بشه متد من در هر Thread یی اجرا شود رویداد اتمام آن نیز در همان Thread صدازننده ، فراخوانی شود؟
من در این کتابخانه از async و await استفاده نکرده بودم.
ممنون
‫۱۰ سال و ۶ ماه قبل، جمعه ۸ فروردین ۱۳۹۳، ساعت ۲۱:۳۰
خیر. در پشت صحنه از یک ماشین حالت (state machine) برای پیاده سازی async استفاده می‌کند. کل سطرهای بعدی تبدیل به یک IEnumerator می‌شوند که هر دستور آن شامل یک yield return است. هر مرحله که تمام شد، MoveNext این IEnumerator فراخوانی می‌شود تا به مرحله‌ی بعدی برسد. به این روش استفاده از coroutines هم گفته می‌شود که در سی شارپ 5، کامپایلر کار تولید کدهای آن‌را انجام می‌دهد. برای مطالعه بیشتر:
انجام پی در پی اعمال Async به کمک Iterators - قسمت اول  
انجام پی در پی اعمال Async به کمک Iterators - قسمت دوم