কখনও কখনও ব্যবহারকারী একটি বর্ধিত প্রযুক্তিগত ক্রিয়াকলাপ শুরু করে যা কার্যকর করতে কিছুটা সময় নেয়। এই ক্ষেত্রে, সাধারণত কোন ধরণের অগ্রগতি বার প্রদর্শন করা ভাল, পাশাপাশি এখন কোন টাস্কটি সম্পাদন করা হচ্ছে সে সম্পর্কিত তথ্য প্রদর্শন করা ভাল।
ইউআই এবং লজিক স্তরগুলি সংযুক্ত করে এড়ানোর জন্য, সাধারণত কোনওরকম প্রক্সি দিয়ে যোগাযোগ হওয়া ভাল। এটি হ'ল, ব্যাক-এন্ডটি তার নিজস্ব ইউআই উপাদানগুলি চালিত করা উচিত নয়, এমনকি সরাসরি মধ্যস্থতাকার স্তরটির সাথে ইন্টারঅ্যাক্ট করা উচিত।
স্পষ্টতই, এই কাজটি করার জন্য কোথাও কোথাও কিছু কল-ব্যাক থাকতে হবে। আমি সাধারণত এটি দুটি উপায়ে একটিতে প্রয়োগ করেছি:
একটি পরিবর্তনীয় অবজেক্টটি ব্যাক-এন্ডে পাস করুন এবং ব্যাক-এন্ডে অগ্রগতিতে এটিতে পরিবর্তন আনুন। যখন কোনও পরিবর্তন ঘটে তখন অবজেক্টটি সম্মুখ-প্রান্তকে অবহিত করে।
ফর্মটির একটি কল-ব্যাক ফাংশন পাস করুন
void f(ProgressObject)
বাProgressObject -> unit
পিছনের শেষটি অনুরোধ করবে। এই ক্ষেত্রে, ব্যাক-এন্ডটি নির্মাণ করেProgressObject
এবং এটি সম্পূর্ণ প্যাসিভ। আমি অনুমান করি প্রতিবার যখনই এটি অগ্রগতির প্রতিবেদন করতে চায় তখন একটি নতুন অবজেক্ট তৈরি করা উচিত।
এই পদ্ধতির ত্রুটিগুলি এবং সুবিধাগুলি কী কী? ব্যবহারের জন্য কি কোনও সম্মত-সর্বোত্তম পদ্ধতি রয়েছে? তাদের ব্যবহারের জন্য কি বিভিন্ন পরিস্থিতি রয়েছে?
আমি অগ্রাহ্য করেছি এমন অগ্রগতির প্রতিবেদন করার সম্পূর্ণ কৌশল কি আছে?
BackgroundWorker
যে আরএইচ উল্লেখ করে ব্যবহার করি। "অগ্রগতি ফর্ম" ইত্যাদির সাথে কাস্টম ক্লাসে আবৃত এবং কোনও ব্যতিক্রম যোগাযোগের জন্য একটি সহজ প্রক্রিয়া - যেমন BackgroundWorker
ডিজাইন পৃথক থ্রেডে চালিত হয়। সীমাবদ্ধতার জন্য আমরা এর বৈশিষ্ট্যগুলি এমনভাবে ব্যবহার করি। এবং যে কোনও ভাষা / কাঠামোর প্রসঙ্গে "আইডোমেটিক" সেরা হতে পারে।