থ্রেডটি কোড 0 (0x0) ছাড়াই অযান্ত্রিক ব্যতিক্রম ছাড়া প্রস্থান করেছে


97

আমার সি # অ্যাপ্লিকেশনটি ডিবাগ করার সময় আমি নিম্নলিখিত বাক্যটির একটি বিশাল পরিমাণের ঘটনা লক্ষ্য করেছি:

থ্রেড - কোড 0 (0x0) সহ প্রস্থান করেছে।

অ্যাপ্লিকেশনটি কাজ করে চলেছে এবং কোনও ব্যতিক্রম ধরা / অপরিবর্তিত নেই।

অ্যাপ্লিকেশনটি উইন্ডোজ 7 64 বিট এ চলছে এবং x86 প্ল্যাটফর্মের সাথে ডিবাগ হয়েছে।


4
আপনি কি নিশ্চিত যে এটি আপনার থ্রেডগুলি? যদি তা হয় তবে আপনি কি তাদের সমাপ্তির আশা করবেন না?
এসএলএক্স

উত্তর:


142

এটি কেবল ডিবাগিং বার্তা। আউটপুট উইন্ডোতে ডান ক্লিক করে আপনি এটিটি স্যুইচ করতে পারেন এবং চেক করতে পারেন Thread Exit Messages

http://msdn.microsoft.com/en-us/library/bs4c1wda.aspx

আপনার অ্যাপ্লিকেশন থেকে প্রোগ্রাম ছাড়াও, আউটপুট উইন্ডো সম্পর্কে তথ্য প্রদর্শন করতে পারে:

  • মডিউলগুলি ডিবাগারটি লোড বা আনলোড হয়েছে।

  • ব্যতিক্রম যে নিক্ষেপ করা হয়।

  • প্রসেসগুলি যে প্রস্থান করে।

  • থ্রেড যে প্রস্থান।


10

ঠিক আছে, কোনও অ্যাপ্লিকেশনটির সমান্তরালে প্রচুর থ্রেড চলতে পারে। কিছু আপনার দ্বারা চালিত হয়, কোডার, কিছু ফ্রেমওয়ার্ক ক্লাস দ্বারা চালিত হয় (স্পষ্টত যদি আপনি একটি জিইউআই পরিবেশে থাকেন)।

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


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

ঠিক আছে, থ্রেডগুলি আসলে আপনার প্রয়োগকে প্রভাবিত করবে, তবে আপনি যে বার্তা পেয়েছেন তা সেগুলি সফলভাবে শেষ করে দেয়। সুতরাং আপনি চেষ্টা করতে পারেন এবং কেন সেগুলি চালিত হয় তা আবিষ্কার করতে পারেন (ডিবাগ মেনু => উইন্ডোজ => থ্রেড), তবে এগুলি এটাই শেষ is
কেক

এগুলি সাধারণত শেষ হয় তবে লিনাক্স সার্ভারের বিযুক্ত প্রক্রিয়াগুলি। নেট ফ্রেমওয়ার্ক থ্রেডের পার্শ্ব-প্রতিক্রিয়া হতে পারে। মাল্টিথ্রেডিং বাস্তবায়নে অ্যাপ্লিকেশনটির বিভিন্ন প্রোগ্রামিং ত্রুটি থাকতে পারে। এটা কি সম্ভব?
জিওনাটা

আমি জানি না। এই লিনু সার্ভার .NET চলছে? মনো ব্যবহার করছেন? আসলে আপনার সমস্যা কি? অপসারণ প্রক্রিয়া?
কেক

হ্যাঁ, ডুফান্ট প্রক্রিয়াগুলি লিনাক্স সার্ভারকে ক্র্যাশ করে তোলে।
জিওনাটা

7

ব্লুএমের গৃহীত উত্তর সম্পূর্ণ করতে, আপনি এটিকে এখানে নিষ্ক্রিয় করতে পারেন:

সরঞ্জামগুলি> বিকল্পগুলি> ডিবাগিং> সাধারণ আউটপুট সেটিংস> থ্রেড প্রস্থান বার্তা: বন্ধ


4
ব্লুএমের গৃহীত উত্তরে একটি সহজ সমাধান পাওয়া যায়: "আপনি আউটপুট উইন্ডোতে ডান ক্লিক করে
সাইমন মেকেনজি

5

যদি আপনার অ্যাপ্লিকেশন থ্রেড প্রত্যক্ষ বা অপ্রত্যক্ষভাবে ব্যবহার করে (যেমন একটি তৃতীয় পক্ষের লাইব্রেরির মতো দৃশ্যের পিছনে) থ্রেডগুলি সম্পন্ন হওয়ার পরে এটি সমাপ্ত করা একেবারেই সাধারণ বিষয় ... যা আপনি বর্ণনা করছেন মূলত এটি ... ডিবাগার এই বার্তাটি দেখায় ... আপনি না চাইলে এই বার্তাটি প্রদর্শন না করার জন্য আপনি ডিবাগারটি কনফিগার করতে পারেন ...

উপরেরটি যদি সহায়তা না করে তবে দয়া করে আরও বিশদ সরবরাহ করুন যেহেতু আপনি ঠিক কী সমস্যার মুখোমুখি হচ্ছেন আমি নিশ্চিত নই ...


1

ফ্রেমওয়ার্কটি আপনার তৈরি প্রতিটি উইন্ডোকে সমর্থন করার জন্য থ্রেড তৈরি করে, যেমন আপনি যখন কোনও ফর্ম তৈরি করেন এবং এটি প্রদর্শন করুন ()। উইন্ডোজ বন্ধ হয়ে গেলে থ্রেডগুলি সমাপ্ত হয় (অর্থাত্ তারা প্রস্থান করে)।

এটি স্বাভাবিক আচরণ। তবে, যদি অ্যাপ্লিকেশনটি থ্রেড তৈরি করে এবং এই থ্রেডগুলির সাথে সম্পর্কিত অনেকগুলি থ্রেড প্রস্থান বার্তা রয়েছে (থ্রেডের নামগুলির মাধ্যমে কেউ অ্যাপে আলাদা আলাদা নাম দিয়ে সম্ভবত এটি বলতে পারে) তবে সম্ভবত এটি কোনও সমস্যার পরিচায়ক ative অ্যাপ্লিকেশনটি থ্রেড তৈরি করার সাথে যখন কোনও প্রোগ্রাম লজিক ত্রুটির কারণে না হওয়া উচিত।

মূল পোস্টারটি একটি আকর্ষণীয় ফলোআপ হবে যাতে সার্ভার ক্র্যাশ হওয়ার সাথে সাথে সমস্যার বিষয়ে তিনি কী আবিষ্কার করেছিলেন তা আমাদের জানান। আমার অনুভূতি আছে যে এটির সাথে কিছু করার দরকার নেই ... তবে পোস্ট করা তথ্য থেকে বলা শক্ত hard


1

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

অন্যরা যেমন বলেছে, থ্রেডগুলি শেষ হয়ে গেলে প্রস্থান করার জন্য এটি সম্পূর্ণ স্বাভাবিক।


-1

আমিও এই সমস্যার মুখোমুখি হয়েছি এবং সমাধানটি হ'ল:

  1. সমাধান অন্বেষণ খুলুন
  2. Program.cs ফাইলটিতে ডাবল ক্লিক করুন

আমি এই কোডটি আবার যুক্ত করেছি এবং আমার প্রোগ্রামটি সঠিকভাবে চলেছিল:

Application.Run(new PayrollSystem()); 
//File name this code removed by me accidentally.
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.