একটি থ্রেড প্রস্থান কোড কি?


115

ডিবাগিংয়ের সময় আউটপুট উইন্ডোতে থ্রেডের প্রস্থান কোডটি ঠিক কী? এটি আমাকে কী তথ্য দেয়? এটি কি কোনও উপযোগী বা কেবল একটি অভ্যন্তরীণ জিনিস যা আমাকে বিরক্ত করবেন না?

The thread 0x552c has exited with code 259 (0x103).
The thread 0x4440 has exited with code 0 (0x0).

এর তাত্পর্য সহ সম্ভাব্য বহির্গমন কোডগুলির তালিকাতে কি কিছু রয়েছে?

উত্তর:


100

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

আরও তথ্যের জন্য দরকারী হতে পারে এমন নিকটতম লিঙ্কটি হ'ল এটি

উপরের লিঙ্ক থেকে উদ্ধৃতি:

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


গেটেক্সিটকোডথ্রেডের জন্য ডকুমেন্টেশন থেকে

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


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


1
আউটপুট উইন্ডো থেকে এটিকে মুক্ত করার কোনও উপায় আছে?
আর্ন এভার্টসন

26
@ আর্নেভারটসন - আপনি যদি সরঞ্জামগুলিতে যান তবে বিকল্পগুলি ... "ডিবাগিং \ আউটপুট উইন্ডো" অঞ্চলের অধীনে একটি "থ্রেড প্রস্থান বার্তা" (চালু | বন্ধ) সেটিংস রয়েছে।
জোশ পোলি 19

2
এর অর্থ এই হতে পারে যে আপনি একটি সিঙ্ক্রোনাস অ্যাপ্লিকেশন মূল থ্রেডের মধ্যে অ্যাসিঙ্ক পদ্ধতি ব্যবহার করছেন এবং তাদের সমাপ্ত হওয়ার জন্য অপেক্ষা করছেন না। এর সাথে মোকাবিলার সহজতম উপায় হ'ল ওয়েট () কে একটি কার্যক্রমে কল করা এবং এই নমুনাটিতে প্রদর্শিত অন্য পদ্ধতি দ্বারা ফিরে আসা: এ্যাসট নেট / ওয়েবে -ইপি / ওভারভিউ / অ্যাডভান্সড/…RunAsync().Wait();
ব্রোন ডেভিস

1
অপেক্ষা করুন () কল করার পরেও ব্রাউনড্যাভিস থ্রেড-পুল থ্রেডটি ত্রুটি কোড 259 সহ প্রস্থান করে। আমার কোডটি এখানে: static void Main(string[] args) { var t = new Task<object>(() => SomeOp(2)); t.Start(); t.Wait(); }জিনিসটি হ'ল, থ্রেড পুলের থ্রেডগুলি দ্বারা কার্য সম্পাদন করা হয় এবং থ্রেড পুলের হিউরিস্টিক্সের ভিত্তিতে এটি আপনার টাস্ক শেষ হওয়ার পরেও থ্রেডটি শেষ করতে পারে না। থ্রেডটি কেবল পরবর্তী টাস্কের জন্য নির্ধারিত অপেক্ষা করার জন্য থ্রেডের পুলটিতে ফিরে আসে। এবং এজন্য এখানে প্রস্থান কোড STILL_ACTIVE (259) এত স্বজ্ঞাত মনে হচ্ছে।
আরবিটি

লিঙ্কের নিবন্ধটি ভুল। কোনও প্রয়োজন নেই যে কোনও থ্রেডের প্রস্থান কোড (বা কোনও প্রক্রিয়া প্রস্থান কোড, সে ক্ষেত্রে) কেবলমাত্র একক বাইট হবে।
হ্যারি জনস্টন

55

যেমন সয়েস উল্লেখ করেছেন, প্রস্থান কোড 259 (0x103) বিশেষ অর্থ রয়েছে, এক্ষেত্রে ডিবাগ হওয়া প্রক্রিয়াটি এখনও চলছে।

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


7
আরও তথ্য .. সাধারণত কোনো থ্রেড যে থ্রেড পুল মালিকানাধীন হয় 259. দেখুন সঙ্গে থেকে প্রস্থান করা হবে: stackoverflow.com/questions/21632584/...
Skrymsli

আমি কী ভাবছিলাম তা ভাবছিলাম এবং আপনার উত্তরটি আমার সি # কনসোল অ্যাপ্লিকেশনটি চালানোর সময় যা দেখছিলাম তা হ'ল। ধন্যবাদ!
kayleeFrye_onDeck

0

আমার কী হয়েছিল তা হল আমার সমাধানে আমার একাধিক প্রকল্প রয়েছে। আমি প্রকল্প 1 টি ডিবাগ করতে চাইছিলাম, তবে প্রকল্প 2টি ডিফল্ট শুরুর প্রকল্প হিসাবে সেট করা হয়েছিল। আমি এটিকে ঠিক করেছি, প্রকল্পটিতে ডান ক্লিক করুন এবং "স্টার্টআপ প্রকল্প হিসাবে সেট করুন" নির্বাচন করুন, তারপরে ডিবাগিং ঠিক আছে।


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