مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

iran

عضویت از 1394/01/31

مشکل در اجرا Asynchronouse در mvc.net

  • یکشنبه 5 خرداد 1398
  • 15:21
تشکر میکنم

سلام
من کد زیر را نوشته ام

public async Task<ActionResult> Index()
		{
			ViewBag.Status = "False";
			await SendMessage();
			return View();
		}
		
private async Task SendMessage()
		{
			Operation.DiscsList.Clear();
			await Task.Run(() =>
		   {
			   var result = new List<Disc>();
			   foreach (var reader in list)
			   {
				   Operation.List.Add(new DiscsList
				   {
					   Id = AESAlgorithm.DecryptText(reader.Id),
					   name = AESAlgorithm.DecryptText(reader.name),
					   family = AESAlgorithm.DecryptText(reader.family),
					   tel=AESAlgorithm.DecryptText(reader.tel),
				   });
			   }
		   });
		}		

بخاطر سنگین (زیاد) بودن اطلاعات حدود3 دقیقه طول میکشد
ولی تا اتمام عملیات صفحه لود نمیشود
من باید چه تغییری ایجاد کنم
صفحه سریع لود شود و عملیات در پس زمینه انجام پذیرد
باتشکر

پاسخ های این پرسش

تعداد پاسخ ها : 1 پاسخ
کاربر سایت

salman_b

عضویت از 1396/02/18

  • یکشنبه 5 خرداد 1398
  • 17:12

یه نکته این که Task.Run یک Thread جدید میسازه و در ساز و کار ASP همچین کاری اشتباه هستش چون هر درخواست در Thread جدا پردازش میشه.

نکته دوم اینکه عملیات پس‌زمینه در ASP معنا ندارد مگر اینکه SendMessage به اکشن Index ارتباطی نداشته باشه یعنی برای نمایش Index نیازی به نتیجه SendMessage  نداشته باشی. اگه اینطور هست اون کلمه کلیدی awiat رو بردار.

نکته بعدی اینکه Decrypt کردن برای چی انجام میشه ؟ روی چی انجام میشه ؟ چقدر آیتم توی اون لیستی که اصلا معلوم نیست از کجا آوردی هست ؟ result این وسط چی میگه و چرا new شده ؟!

نکته بعدی

برای حل یک مسئله هزاران راه وجود داره که هر راهی ممکنه به ذهن یه نفر برسه و اگه اون مسئله عمومی باشه قطعا براش best practice وجود داره.

اما خب من اصلا نمیدونم مسئله شما چی هست تا اگه دانشم جواب میداد براتون راه حل بهینه ارائه بدم.

بهتر مسئله رو بگی تا یه قطعه کد بذاری که اصلا نمیدونم قراره چیکار کنه!

موفق باشی.

کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)