একটি পার্থক্য কি between System.Windows.Forms.Timer()
এবং System.Windows.Threading.DispatcherTimer()
? কোন ক্ষেত্রে, আমাদের সেগুলি ব্যবহার করা উচিত? কোন সেরা অনুশীলন?
একটি পার্থক্য কি between System.Windows.Forms.Timer()
এবং System.Windows.Threading.DispatcherTimer()
? কোন ক্ষেত্রে, আমাদের সেগুলি ব্যবহার করা উচিত? কোন সেরা অনুশীলন?
উত্তর:
Windows.Forms.Timer
টাইমার ইভেন্টগুলি প্রক্রিয়া করতে উইন্ডোজ ফর্ম বার্তা লুপ ব্যবহার করে। উইন্ডোজ ফর্ম অ্যাপ্লিকেশনগুলিতে ব্যবহৃত টাইমিং ইভেন্টগুলি লেখার সময় এটি ব্যবহার করা উচিত এবং আপনি টাইমারটি প্রধান UI থ্রেডে চালিত করতে চান।
DispatcherTimer
ডাব্লুপিএফ সময় ব্যবস্থা। আপনি যখন সময়কে একই পদ্ধতিতে পরিচালনা করতে চান তখন এটি ব্যবহার করা উচিত (যদিও এটি একক থ্রেডের মধ্যে সীমাবদ্ধ নয় - প্রতিটি থ্রেডের নিজস্ব প্রেরণকারী রয়েছে) এবং আপনি ডাব্লুপিএফ ব্যবহার করছেন। এটি ডিসপ্যাচারের মতো একই থ্রেডে ইভেন্টটিকে আগুন দেয়।
সাধারণভাবে, WPF == DispatcherTimer
এবং Windows Forms == Forms.Timer
।
বলা হচ্ছে, System.Threading.Timer
এটি একটি টাইমার class
যা পৃথক থ্রেডে আগুন দেয়। খাঁটি সংখ্যাসূচক সময়গুলির জন্য এটি ভাল, যেখানে আপনি ইউআই ইত্যাদি আপডেট করার চেষ্টা করছেন না etc.
আমি এখানে ছোট উদাহরণগুলির সাথে টাইমার সম্পর্কে ভাল নিবন্ধটি পেয়েছি: http://www.progware.org/Blog/post/Timers-in-WPF.aspx
উপসংহার হিসেবে:
যদি ডসোমথিং () জিইআইআই উপাদানগুলিকে ম্যানিপুলেট করে তবে টাইমারের সাথে আপনার ব্যবহার করা উচিত: এটি.ডিসপ্যাচার.আইভাক ((অ্যাকশন) ডেলিগেট {// জিইআইআই রিলেটেড কোড এখানে} যেহেতু আপনি সরাসরি আলাদা থ্রেড থেকে জিআইআই নিয়ন্ত্রণগুলি অ্যাক্সেস করতে পারবেন না। ডিসপ্যাচারটাইমার দিয়ে আপনি করেন এটা করার দরকার নেই।
যদি ডসোমথিং () কোনও সময়সাপেক্ষ কার্য সম্পাদন করে, তবে ডিসিপ্যাচারটাইমারের ক্ষেত্রে জিইউআই জমা হবে। টাইমারের ক্ষেত্রে এটি দীর্ঘায়িত হবে না, কারণ দীর্ঘ মিথগুলি অন্য কোনও থ্রেডে কার্যকর করা হয়