ভিজ্যুয়াল স্টুডিও: কনটেক্সটসুইচডিডলক


167

আমি একটি ত্রুটি বার্তা পেয়েছি যা আমি সমাধান করতে পারি না। এটি ভিজ্যুয়াল স্টুডিও বা ডিবাগার থেকে উদ্ভূত। আমি নিশ্চিত নই যে চূড়ান্ত ত্রুটি শর্তটি ভিএস, ডিবাগার, আমার প্রোগ্রাম বা ডাটাবেসে আছে কিনা।

এটি একটি উইন্ডোজ অ্যাপ। কোনও ওয়েব অ্যাপ নয়।

ভিএস-এর প্রথম বার্তাটি একটি পপআপ বাক্সটি বলে: "কোনও কল স্ট্যাক ফ্রেমের জন্য কোনও চিহ্ন চিহ্ন লোড করা হয় না The উত্স কোডটি প্রদর্শিত হতে পারে না।" এটি ক্লিক করার পরে, আমি পেয়েছি: " কনটেক্সটসুইচডিয়ডলক সনাক্ত করা হয়েছিল ", নীচে পুনরুত্পাদন করা একটি দীর্ঘ বার্তা সহ।

একটি লুপে ত্রুটি দেখা দেয় যা একটি ডেটা টেবিলকে স্ক্যান করে। প্রতিটি লাইনের জন্য, এটি স্কেলকম্যান্ডের পরামিতি হিসাবে টেবিল থেকে একটি কী (এইচআইসি #) মান ব্যবহার করে। কমান্ডটি স্কেলডাটাআরডিটার তৈরি করতে ব্যবহৃত হয় যা এক লাইনে ফিরে আসে। ডেটা তুলনা করা হয়। কোনও ত্রুটি ধরা পড়লে একটি সারি একটি দ্বিতীয় ডেটাটেবেলে যুক্ত করা হয়।

ত্রুটিটি প্রক্রিয়াটি চালাতে কতক্ষণ সময় নেয় তার সাথে সম্পর্কিত বলে মনে হচ্ছে (অর্থাত্ 60 সেকেন্ডের পরে), কত ত্রুটি পাওয়া যায় না। আমি মনে করি না এটি একটি স্মৃতির সমস্যা। লুপের মধ্যে কোনও ভেরিয়েবল ঘোষণা করা হয় না। কেবলমাত্র বস্তুগুলি তৈরি করা হয় তারা হ'ল স্ক্ল্যাডেটাআরেডার এবং তারা স্ট্রাকচার ব্যবহার করে। সিস্টেম.জিসি.কলেক্ট () এর কোনও প্রভাব ছিল না Add

ডিবি একই ল্যাপটপের একটি স্কেল সার্ভার সাইট।

ফর্মটিতে কোনও অভিনব গিজমোস বা গ্যাজেট নেই।

আমি এই প্রকল্পে এমন কিছু সম্পর্কে অবগত নই যা আমি এর আগে কয়েক ডজন বার করেছি from আমি এর আগে ত্রুটিটি দেখেছি, তবে কখনও সুসংগত ভিত্তিতে নয়।

কোন ধারণা, কেউ?

সম্পূর্ণ ত্রুটি পাঠ্য: সিএলআর COM প্রসঙ্গ 0x1a0b88 থেকে COM প্রসঙ্গে 0x1a0cf8 তে 60 সেকেন্ডের জন্য রূপান্তর করতে অক্ষম। গন্তব্য প্রসঙ্গ / অ্যাপার্টমেন্টের মালিকানাধীন থ্রেডটি সম্ভবত উইন্ডোজ বার্তাগুলি পাম্প না করেই পাম্পিং অপেক্ষায় কাজ করে বা একটি দীর্ঘ দীর্ঘ চলমান অপারেশন প্রক্রিয়াজাত করে। এই পরিস্থিতিতে সাধারণত একটি নেতিবাচক কর্মক্ষমতা প্রভাব থাকে এবং এমনকি অ্যাপ্লিকেশনটি অ প্রতিক্রিয়াশীল বা মেমরির ব্যবহার নিয়মিতভাবে ক্রমাগতভাবে জমা হতে পারে। এই সমস্যাটি এড়াতে, সমস্ত একক থ্রেডেড অ্যাপার্টমেন্ট (এসটিএ) থ্রেডগুলিতে দীর্ঘকাল চলমান ক্রিয়াকলাপের সময় পাম্পিং ওয়েট আদিম (যেমন CoWaitforM MultipleHandles) ব্যবহার করা উচিত এবং নিয়মিতভাবে বার্তা পাম্প করা উচিত।

উত্তর:


287

ContextSwitchDeadlockঅগত্যা আপনার কোড একটি সমস্যা আছে, একটি সম্ভাব্য ঠিক আছে মানে এই নয়। আপনি যদি Debug > Exceptionsমেনুতে যান এবং এটি প্রসারিত করেন তবে Managed Debugging Assistantsআপনি ContextSwitchDeadlockসক্ষম পাবেন। আপনি যদি এটি অক্ষম করেন, আইটেমগুলি প্রক্রিয়া করতে দীর্ঘ সময় নিচ্ছে তখন ভিএস আপনাকে আর সতর্ক করবে না। কিছু ক্ষেত্রে আপনার বৈধভাবে একটি দীর্ঘ-চলমান অপারেশন থাকতে পারে। এটি প্রক্রিয়া চলাকালীন আপনি ডিবাগিংয়ের সময় এবং কোনও লাইনে থেমে থাকলেও এটি সহায়ক you've আপনি কোনও সমস্যা খনন করার সুযোগ পাওয়ার আগে আপনি এটি অভিযোগ করবেন না।


4
ঠিক! ধন্যবাদ। আমাকে কাস্টমাইজ করতে গিয়ে ডিবাগ মেনুতে ব্যতিক্রম যুক্ত করতে হয়েছিল। ইউআই এর সবচেয়ে স্বজ্ঞাত দিক নয়। সরঞ্জামগুলি \ কাস্টমাইজ করুন, তারপরে কমান্ডগুলি পুনরায় সাজান (বোতাম), তারপরে উপরের ডানদিকে ড্রপ-ডাউন থেকে ডিবাগ নির্বাচন করুন, তারপরে অ্যাড (বোতাম)। রক্ষে!
সিড্রাইভ

81
ctrl-alt-eব্যতিক্রম ডায়ালগ এনেছে।
ফ্লোরিয়ান ডায়ন

1
ভিজ্যুয়াল স্টুডিওর (সাম্প্রতিকতম ২০১২, ২০১০, ২০০৮) অনেকগুলি সাম্প্রতিক সংস্করণ এবং সম্ভবত কিছু পূর্ববর্তী সংস্করণগুলি ইনস্টলের পরে প্রথম চালিত হওয়ার পরে একজনকে ভিজ্যুয়াল স্টুডিওর প্রাথমিক ব্যবহার চয়ন করতে দেয়। এই পছন্দটি টুলবারগুলির ডিফল্ট বিন্যাস নির্ধারণ করে, যার মধ্যে রয়েছে নিয়ন্ত্রণগুলি দৃশ্যমান বা লুকানো রয়েছে এবং কোন কীস্ট্রোক কোন আদেশের সাথে মিল রয়েছে। ভিএস ২০১০-তে, আমদানি ও রফতানি সেটিংস উইজার্ড আপনাকে উপলব্ধ ডিফল্টগুলির মধ্যে একটিতে পুনরায় সেট করতে দেয়।
জেরেফেথ

4
@ বি ক্লেশানন - কনটেক্সটসুইচডিয়ডলক ডিবাগারটির জন্য নির্দিষ্ট। এক্সের একটি প্রকাশ সংস্করণ এই বার্তাটি প্রদর্শন করবে না।
পেড্রো

9
ভিএস 2013 এ নেভিগেট করুন Debug -> Windows -> Exceptions Settings। তারপরে অনুসন্ধানটি ব্যবহার করুন
মার্কাস ওয়েবার

16

পেড্রো যেমন বলেছিলেন, আপনি যদি কোডের মাধ্যমে পদক্ষেপ নিচ্ছেন তবে মেসেজ পাম্পটিকে আটকাতে আপনার ডিবাগারটি নিয়ে একটি সমস্যা রয়েছে।

তবে আপনি যদি ইউআই থ্রেডে দীর্ঘ সময় ধরে চলমান ক্রিয়াকলাপটি চালিয়ে যাচ্ছেন, তবে অ্যাপ্লিকেশন D ডওএভেন্টস () কে কল করুন যা স্পষ্টভাবে বার্তাটির কাতাকে পাম্প করে এবং তারপরে আপনার বর্তমান পদ্ধতিতে নিয়ন্ত্রণ ফিরিয়ে দেয়।

তবে আপনি যদি এটি করেন তবে আমি আপনার নকশাটি দেখার পরামর্শ দিচ্ছি যাতে আপনি ইউআই থ্রেডটি প্রসেসিং করতে পারেন যাতে আপনার ইউআইটি সুন্দর এবং চটজলদি থাকে।


14

দেখে মনে হচ্ছে আপনি অ্যাপের মূল ইউআই থ্রেডটিতে এটি করছেন। ইউআই থ্রেডটি উইন্ডোজ বার্তাগুলি আগত হিসাবে পাম্প করার জন্য দায়ী, এবং এখনও আপনার ডাটাবেস কলগুলিতে অবরুদ্ধ থাকায় এটি এটি করতে অক্ষম। এটি সিস্টেমের প্রশস্ত বার্তাগুলিতে সমস্যা সৃষ্টি করতে পারে।

আপনার দীর্ঘক্ষণ চলমান অপারেশনের জন্য একটি পটভূমি থ্রেড তৈরি করা উচিত এবং এটি হওয়ার সময় কোনও ধরণের "আমি ব্যস্ত" ডায়ালগ স্থাপন করা উচিত putting


13

ভিজ্যুয়াল স্টুডিও 2017 এ কনটেক্সটসইচডিয়েডলক বিকল্পটি চেক করা নেই:

ডিবাগ> উইন্ডোজ> ব্যতিক্রম সেটিংস

এখানে চিত্র বর্ণনা লিখুন

উইন্ডোজ সেট করার ব্যতিক্রম: কনটেক্সটসুইচডিডলক বিকল্পটি আনচেক করুন

এখানে চিত্র বর্ণনা লিখুন


9

আপনি যদি এই ব্যতিক্রমটি অক্ষম করতে না চান, আপনাকে যা করতে হবে তা হ'ল আপনার অ্যাপ্লিকেশনটি হ'ল কমপক্ষে প্রতি 60 সেকেন্ডে একবারে কিছু বার্তা পাম্প করা। এটি এই ব্যতিক্রম ঘটতে প্রতিরোধ করবে। সিস্টেম.ট্রেডিং.ট্রেড। কর্নার থ্রেড.জয়িন (10) একবার কল করার চেষ্টা করুন। আপনি করতে পারেন এমন অন্যান্য কল রয়েছে যা বার্তাগুলিকে পাম্প করতে দেয়।


আপনি ব্যাখ্যা করতে পারেন কেন এটি সাহায্য করে?
রোলগুলি

এটি কাজ করবে না, আমার কাছে ইউআই আপডেট করার একটি লুপ রয়েছে এবং তবুও ত্রুটি বার্তাটি পাই।
htm11h

1
10 মিলিসেকেন্ডের মান ব্যবহার করার দরকার নেই, বাস্তবে আপনি যদি দীর্ঘ-চলমান অপারেশনে পুনরায় এটির কল করতে চান তবে সামগ্রিক কর্মক্ষমতা (মোট সময় নির্বাহ) অনেকটাই হ্রাস পাবে। এটিতে শূন্য পাস করুন।
এলেক্ট্রো স্টুডিওগুলি

আমারও একই সমস্যা ছিল কাজ করার জন্য আপনার সমাধান খুঁজে পেয়েছে। ধন্যবাদ!
এসকে শাহনাওয়াজ-উল হক

2

উপরের সমাধানটি কিছু পরিস্থিতিতে ভাল তবে এটির আরও একটি পরিস্থিতি রয়েছে যেখানে আপনি ইউনিট পরীক্ষা করার সময় এটি ঘটে এবং যখন আপনি সমাধানটি ডিবাগের সাথে সেট না করেন আপনি টেস্ট এক্সপ্লোরার থেকে "ডিবাগ নির্বাচিত টেস্টগুলি" চেষ্টা করেন।

এক্ষেত্রে আপনার সমাধানটি রিলিজ থেকে বা পরিবর্তন করা দরকার যা এই ক্ষেত্রে ডিবাগ-এ সেট করা আছে। যদি এই সমস্যা হয় তবে "কনটেক্সটসুইচডিয়ডলক" পরিবর্তন করা আপনাকে সত্যই সহায়তা করবে না।

আমি নিজেই এটিকে মিস করেছি কারণ ত্রুটি বার্তাটি খুব বাজে ছিল আমি যে স্পষ্ট জিনিসটি ডিবাগ সেটিংস যাচাই করেছিলাম না!


1

ভিজ্যুয়াল স্টুডিও 2017 স্প্যানিশ সংস্করণে।

"Depurar" -> "Ventanas" -> "কনফিগারেশন"

এবং "কনটেক্সটসুইচডিডলক" অনুসন্ধান করুন। তারপরে, এটিটি চেক করুন। বা শর্টকাট

জন্য Ctrl + ডি, ই

সেরা।


0

আপনি প্রসঙ্গটি সুইচডেডলক থেকে চেক করে এটি সমাধান করতে পারেন

ডিবাগ-> ব্যতিক্রম ... -> এমডিএ নোড প্রসারিত করুন -> আনচেক করুন -> প্রসঙ্গে সুইচডেডলক


0

আমি এই ত্রুটিটি পাচ্ছিলাম এবং প্রশ্নগুলি async (অপেক্ষা করুন (...)। টোলিস্টসিন্যাস ()) এ স্যুইচ করেছি। এখন সব ভাল।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.