‫۱۰ سال و ۶ ماه قبل، جمعه ۸ فروردین ۱۳۹۳، ساعت ۲۱:۱۷
من یکم گیج شدم:شما فرمودید که :
- await به کامپایلر می‌گوید، عبارت پس از من، یک وظیفه‌ی غیرهمزمان است و ادامه‌ی کدهای نوشته شده، تنها زمانی باید اجرا شوند که عملیات غیرهمزمان معرفی شده، تکمیل گردد. 
این آیا بدان معنا نیست که ترد اصلی برنامه باید قفل شود؟
‫۱۰ سال و ۶ ماه قبل، شنبه ۲ فروردین ۱۳۹۳، ساعت ۲۳:۰۱
استفاده از async به معنای خالی کردن ترد جاری کدهای مدیریت شده‌ی دات نت است و انجام سایر کارهای برنامه و صبر کردن برای دریافت پاسخی است که در سمت کدهای مدیریت شده نیازی به پردازش و محاسبه ندارد.
برای مثال در حالت کار با یک دیتابیس، این موتور بانک اطلاعاتی است که کوئری رسیده را پردازش می‌کند و برنامه‌ی ما صرفا درخواستی را به آن ارائه داده است. به این ترتیب در اینجا استفاده از async برای خالی کردن ترد جاری و صبر کردن جهت دریافت نتیجه‌ی اطلاعات از سرور مفید است و میزان پاسخ‌دهی برنامه را بالا می‌برد.
بنابراین استفاده از async در سمت کدهای دات نتی، تاثیری بر روی عملکرد یک بانک اطلاعاتی ندارد. فقط در سمت کدهای ما است که برنامه تا رسیدن و محاسبه‌ی درخواست توسط بانک اطلاعاتی، هنگ نمی‌کند.
در این حالت اگر برنامه‌ی شما ویندوزی است، ترد UI آن آزاد شده و برنامه مدام در حال هنگ به نظر نمی‌رسد. اگر برنامه‌ی وب است، ترد جاری آن آزاد شده و thread pool برنامه می‌تواند از این ترد آزاد شده، برای پردازش سایر درخواست‌های رسیده توسط کاربران استفاده کند. به این ترتیب بازدهی و اصطلاحا throughput سرور افزایش پیدا می‌کند.
در حال حاضر تمام APIهای جدید مایکروسافت نسخه‌ی async را هم اضافه کرده‌اند. برای مثال اگر از EF استفاده می‌کنید، از نسخه‌ی 6 آن به بعد، متدهایی مانند ToListAsync برای کوئری گرفتن معمولی غیرهمزمان و SaveChangesAsync برای ذخیره سازی اطلاعات به صورت غیرهمزمان، اضافه شده‌اند. یک مثال کامل در این مورد در اینجا
البته بدیهی است تمام ORMهای دات نتی در سطح پایین خودشان از ADO.NET استفاده می‌کنند. ADO.NET نیز Async API سازگار با دات نت 4.5 به بعد را مدتی است که اضافه کرده‌است. برای مثال متدهایی مانند ExecuteReaderAsync ، GetFieldValueAsync و ExecuteNonQueryAsync و امثال آن به زیر ساخت ADO.NET اضافه شده‌اند. اطلاعات بیشتر
‫۱۰ سال و ۶ ماه قبل، شنبه ۲ فروردین ۱۳۹۳، ساعت ۲۲:۳۶
سلام
بسیار بسیار تشکر برای آموزش این بحث جالب.
یک سوال:
موضوع کاربردی که من از این مطلب فهمیدم به شکل زیر است، لطفاً اگر اشتباه است بفرمایید:
در پروژۀ واقعی که حجم دیتابیس زیاد میشود، ممکن است اندکی زمان برای ذخیره اطلاعات، جستجو و غیره لازم باشد که این باعث عدم پاسخ سرور به سایر درخواست‌ها میشود، حال با استفاده از Async مثلاً در زمان context.SaveChanges این مشکل رفع شده و پس از ثبت اطلاعات آی دی رکورد جدید برگشت داده میشود.
ممنون
‫۱۰ سال و ۶ ماه قبل، جمعه ۱ فروردین ۱۳۹۳، ساعت ۰۰:۲۳
برای اینکه بتونم از این پلاگین استفاده کنم باید پلاگین jquery.bootstrap-modal-ajax-form.js   رو دست کاری کنم یا احتیاج به دست کاری نیست؟
‫۱۰ سال و ۶ ماه قبل، پنجشنبه ۲۹ اسفند ۱۳۹۲، ساعت ۲۲:۲۳
فرمی که Ajax ایی به سرور ارسال می‌شود قابلیت ارسال فایل ندارد. HttpPostedFileBase بر مبنای post back کامل کار می‌کند.
نمی‌شود از Ajax معمولی (یا به عبارتی XMLHttpRequest) برای ارسال فایل استفاده کرد. یا باید از سیلورلایت یا فلش استفاده کنید، یا از مرورگرهایی که XMLHttpRequest Level 2 را پشتیبانی کنند (از IE 10 به بعد مثلا)، امکان Ajax upload توکار به همراه گزارش درصد آپلود را بدون نیاز به فلش یا سیلورلایت، دارند.یک نمونه پیاده سازی آن  
‫۱۰ سال و ۶ ماه قبل، پنجشنبه ۲۹ اسفند ۱۳۹۲، ساعت ۲۱:۲۹
با سلام، من می‌خواهم کاربر یتواند یک فایل آپلود کند درون فرم مودال کد زیر را نوشتم
  <div>
                                <input type="file" name="siteIcon" id="siteIcon" />
                              
                                @Html.ValidationMessageFor(model => model.SiteImage)
                            </div>
ولی زمانی که کاربر بر روی دکمه ثبت کلیک می‌کند فایل انتخاب شده به سمت سرور ارسال نمی‌شود.
 public virtual ActionResult Create(Site site, HttpPostedFileBase siteIcon)
        {
}

یعنی پارامتر siteIcon همیشه مقدار NULL رو داره. ممنون میشم راهنمایی کنید.
‫۱۰ سال و ۷ ماه قبل، شنبه ۲۴ اسفند ۱۳۹۲، ساعت ۰۴:۳۴
پروژه شما باید باشد برای دیباگ. امکان دیباگ از راه دور را نداریم. لطفا در انجمن‌ها این مساله را پیگیری کنید.