আমি সি # তে কোনও প্রোগ্রামে কীভাবে বিলম্ব যুক্ত করতে পারি?
আমি সি # তে কোনও প্রোগ্রামে কীভাবে বিলম্ব যুক্ত করতে পারি?
উত্তর:
আপনি যেমন Thread.Sleep()
ফাংশন ব্যবহার করতে পারেন
int milliseconds = 2000;
Thread.Sleep(milliseconds);
যা সম্পূর্ণভাবে 2 সেকেন্ডের জন্য বর্তমান থ্রেডের সম্পাদন বন্ধ করে দেয় ।
সম্ভবত সবচেয়ে উপযুক্ত পরিস্থিতিটি Thread.Sleep
হ'ল আপনি যখন অন্য থ্রেডে অপারেশনগুলিকে বিলম্ব করতে চান, মূল থেকে পৃথক:
MAIN THREAD --------------------------------------------------------->
(UI, CONSOLE ETC.) | |
| |
OTHER THREAD ----- ADD A DELAY (Thread.Sleep) ------>
অন্যান্য পরিস্থিতিতে (যেমন কিছু সময়ের পরে অপারেশন শুরু করা ইত্যাদি) কোডির উত্তর পরীক্ষা করে দেখুন ।
await Task.Delay(milliseconds)
। এটি আমার জন্য কাজ করেছে :)
২-৩ সেকেন্ডে অন্তর সেট করে টাইমার ব্যবহার করুন।
আপনি কোন ধরণের অ্যাপ্লিকেশন লিখছেন তার উপর নির্ভর করে আপনার কাছে বেছে নিতে তিনটি আলাদা বিকল্প রয়েছে:
Thread.Sleep
আপনার অ্যাপ্লিকেশনটিকে একই সময়ে সেই থ্রেডের কোনও ইনপুট প্রক্রিয়া করার প্রয়োজন হলে (উইনফোর্ডস, ডাব্লুপিএফ) ব্যবহার করবেন না , কারণ Sleep
থ্রেডটি সম্পূর্ণভাবে লক হয়ে যায় এবং এটি অন্যান্য বার্তাগুলি প্রক্রিয়াজাতকরণ থেকে বাধা দেয়। একক থ্রেডযুক্ত অ্যাপ্লিকেশন ধরে নিচ্ছেন (যেমনটি বেশিরভাগ হিসাবে রয়েছে), আপনার সম্পূর্ণ অ্যাপ্লিকেশনটি সম্ভবত আপনার ইচ্ছা অনুযায়ী কোনও ক্রিয়াকলাপে বিলম্ব না করে বরং সাড়া দেওয়া বন্ধ করবে। মনে রাখবেন যে স্লিপকে খাঁটি কনসোল অ্যাপ্লিকেশনটিতে ব্যবহার করা ভাল হতে পারে কারণ হ্যান্ডেল করার জন্য বা আলাদা থ্রেডে কোনও "ইভেন্ট" নেই ( Task.Delay
এটি আরও ভাল বিকল্প)।
টাইমারগুলি ছাড়াও এবং Sleep
আপনি এটি ব্যবহার করতে পারেন Task.Delay
যা অ্যাসিনক্রোনাস ভার্সন Sleep
প্রক্রিয়াকরণ ইভেন্টগুলি থ্রেডকে ব্লক করে না (যদি সঠিকভাবে ব্যবহৃত হয় - এটির সাথে অসীম ঘুমে রূপান্তর করবেন না .Wait()
)।
public async void ClickHandler(...)
{
// whatever you need to do before delay goes here
await Task.Delay(2000);
// whatever you need to do after delay.
}
একই await Task.Delay(2000)
একটি ব্যবহার করা যেতে পারে Main
একটি কনসোল আবেদন পদ্ধতি আপনি C # এর 7.1 (ব্যবহার এসিঙ্ক দুটিই MSDN ব্লগে প্রধান )।
দ্রষ্টব্য: অপারেশনটি বিলম্ব করার সাথে সাথে Sleep
জাতিদের পরিস্থিতি এড়ানো সুবিধা রয়েছে যা সম্ভাব্যভাবে টাইমারগুলি / দিয়ে একাধিক ক্রিয়াকলাপ শুরু করে Delay
। দুর্ভাগ্যক্রমে ইউআই-ভিত্তিক অ্যাপ্লিকেশন হিমায়িত গ্রহণযোগ্য নয় তাই আপনি যদি একাধিক বিলম্ব শুরু করেন (তবে এটি যদি একটি বোতাম ক্লিক দ্বারা উদ্দীপিত হয়) তবে কী ঘটবে সে সম্পর্কে আপনাকে ভাবতে হবে - এই জাতীয় বোতামটি নিষ্ক্রিয় করা, বা টাইমার / টাস্ক বাতিল করা বা নিশ্চিত হওয়াতে বিলম্ব করার বিষয়টি বিবেচনা করুন অপারেশন নিরাপদে একাধিকবার করা যেতে পারে।
Thread.Sleep
সতর্কতাটি ততটা গুরুত্বপূর্ণ নয়।
await Task.Delay()
সংস্করণ যুক্ত করতে পারেন এবং ইনলাইন মন্তব্য করতে পারেন যে কনসোল অ্যাপটি সম্ভবত সম্ভবত ব্যবহার করতে চায়Sleep
(অ-অ্যাসিঙ্ক Main
) বা Delay
( Main
২.৩ সেকেন্ডের জন্য আপনার করা উচিত:
System.Threading.Thread.Sleep(2300);
System.Threading.Thread.Sleep(
(int)System.TimeSpan.FromSeconds(3).TotalMilliseconds);
বা using
বিবৃতি সহ:
Thread.Sleep((int)TimeSpan.FromSeconds(2).TotalMilliseconds);
আমি এটিকে 1000 * numSeconds
(বা সহজভাবে 3000
) অগ্রাধিকার দিচ্ছি কারণ এটি এর Thread.Sleep
আগে আরও ব্যবহার না করে এমন ব্যক্তির সাথে কী ঘটছে তা আরও স্পষ্ট করে তোলে । এটি আপনার উদ্দেশ্যকে নথিভুক্ত করে।
Thread.Sleep(TimeSpan)
সরাসরি কোনও কন্ট্রোল না করে সরাসরি ব্যবহার করতে পারেন ।