PDA

View Full Version : ارروری برای مدت زمان



A_1397
جمعه 01 اردیبهشت 1391, 09:44 صبح
من توی یکی از برنامه هام دستوراتی نوشتم که میاد مسیر یه فولدر پر از عکس رو میگیره و بعد تمام عکس های داخل اون فلولدر رو در sql ذخیره میکنه. حالا مشکل اینجاست که وقتی تعداد عکس های داخل فولدر زیاد باشه و زمان ذخیره کردن اونها داخل دیتابیس طول بکشه (از 60 ثانیه بگذره) این اررو رو میده:
86024دوستان چطوری میشه از شر این اررور خلاص شد؟ یعنی مهم نباشه که چقدر فرایند ذخیره کردن طول میکشه و تا پایان کار مشکلی پیش نیاد؟:متفکر: متن کامل اررور را میزارم:

ContextSwitchDeadlock was detected
Message: The CLR has been unable to transition from COM context 0x20b3a0 to COM context 0x20b510 for 60 seconds. The thread that owns the destination context/apartment is most likely either doing a non pumping wait or processing a very long running operation without pumping Windows messages. This situation generally has a negative performance impact and may even lead to the application becoming non responsive or memory usage accumulating continually over time. To avoid this problem, all single threaded apartment (STA) threads should use pumping wait primitives (such as CoWaitForMultipleHandles) and routinely pump messages during long running operations.

hakim22
جمعه 01 اردیبهشت 1391, 10:09 صبح
اول باید بگم من برای SQL server enterprise برنامه ای نوشتم و فایلهای بسیار بزرگی (در حد گیگابایت) رو بهش منتقل میکردم ولی هیچوقت با چنین مشکلی مواجه نشدم.
زمان کار هم خیلی طولانی بود.
اول اینکه از یک thread یا backgroundworker استفاده کردم.
در این خطا توضیح داده شده که دلیلش پایین اومدن بازدهی ویندوز به دلیل دسترسی نداشتن به رویدادهای سیستم برای مدت زیاده. که اصولا با یک نخ جدید حل میشه.
از application.dowork هم میشه استفاده کرد که به طور مستقیم از ویندوز می خواهد همه ی رویدادها رو یکبار مرور کنه.

A_1397
جمعه 01 اردیبهشت 1391, 10:36 صبح
مرسی hakim22 عزیز. این مشکل هم روی همه سیستم ها نیست فکر کنم رو سیستم هایی که سرعت پردازش پایینی دارن این اررو رو میده. ولی میشه لطفا بگید چطوری باید یک نخ جدید ایجاد کنم و thread یا backgroundworker که گفتین دقیقا چکاری میکنن؟

کاظم فلاحی خواه
یک شنبه 03 اردیبهشت 1391, 04:08 صبح
سلام دوست عزیز به لینک زیر برو فکر کنم مشکلتو حل کنه
http://blog.wpfwonderland.com/2007/08/16/clr-has-been-unable-to-transition-from-com-context-for-60-seconds/