কনসোল অ্যাপ্লিকেশনে নির্ভরযোগ্য টাইমার


102

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

টাইমার নিয়ন্ত্রণে এই টাইমারটি যেভাবে কাজ করে তা অন্য থ্রেডে রেখে দেওয়া হয় যাতে ব্যস্ততা না থাকলে অভিভাবক থ্রেডে কাজটি শুরু করার পাশাপাশি এটি সর্বদা টিক দিতে পারে।

কনসোল অ্যাপ্লিকেশনটিতে এই টাইমার সহ সমস্যাটি হ'ল টাইমার যখন অন্য থ্রেডের সাথে টিক দিচ্ছিল তখন মূল থ্রেড অ্যাপ্লিকেশনটি বন্ধ করে কিছু করছে না।

আমি একটি while trueলুপ যুক্ত করার চেষ্টা করেছি , তবে তখন টাইমারটি বন্ধ হয়ে গেলে মূল থ্রেডটি খুব ব্যস্ত থাকে।

উত্তর:


59

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


20

প্রক্রিয়াটির শেষে মূল থ্রেডটি ব্লক করতে একটি ম্যানুয়ালসেটসেন্ট ব্যবহার করার বিষয়টি বিবেচনা করুন Reset()এবং টাইমারের প্রক্রিয়া শেষ হওয়ার পরে এটিতে কল করুন। যদি এটি এমন কিছু হয় যা অবিচ্ছিন্নভাবে চালনার দরকার হয় তবে এটিকে কনসোল অ্যাপ্লিকেশনটির পরিবর্তে কোনও পরিষেবা প্রক্রিয়ায় স্থানান্তরিত করার বিষয়টি বিবেচনা করুন।

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