İçeriğe geç

C# Console ile Yazı Yazılmasını Bekleme

Aslında nasıl bir başlık bulacağımı bilemedim o yüzden bu başlığı koydum. Önerileriniz varsa da yorum kısmına beklerim 🙂

Olay şu, diyelim ki console ile bir uygulama yazıyoruz ve kullanıcıdan bazı değerler girmesini bekliyoruz. (Diyebilirsiniz ki ne var bunda Console.ReadLine ne işe yarıyor?) Ama durum öyle değil işte. Olay şu ki belirleyeceğimiz süre içerisinde kullanıcı bir şey girmez ise kodlarımız sırayla çalışmaya devam etsin istiyoruz. İşte bunun için “Reader” isminde bir class oluşturup içerisine aşağıdaki kodları yapıştıralım.


class Reader
{
private static Thread inputThread;
private static AutoResetEvent getInput, gotInput;
private static string input;

static Reader()
{
getInput = new AutoResetEvent(false);
gotInput = new AutoResetEvent(false);
inputThread = new Thread(reader);
inputThread.IsBackground = true;
inputThread.Start();
}

private static void reader()
{
while (true)
{
getInput.WaitOne();
input = Console.ReadLine();
gotInput.Set();
}
}

public static string ReadLine(int timeOutMillisecs)
{
getInput.Set();
bool success = gotInput.WaitOne(timeOutMillisecs);
if (success)
return input;
else
return string.Empty;
}
}

Şimdi kullanımına gelelim. Program.cs içerisinde aşağıdaki şekilde static fonksiyonumuzu çağırıyoruz.


string girilendeger = Reader.ReadLine(3000);

Burada 3000 değeri milisaniye cinsinden bekleyeceği süredir. Eğer bu süre içerisinde ekrana kullanıcı bir şeyler yazarak ENTER tuşuna basmaz ise o zaman girilendeger değişkeni boş (“”) olarak geçer ve devam eder. Eğer altında başka kodlar var ise onlar çalışmaya devam eder.

Nerede kullanırım diyenlere benim kullanım alanımda kısa bir örnek vereyim. Ben genelde console uygulamalarını windows schedule olarak tanımlamada kullanırım. Bu nedenle bazı console uygulamalarımda ise birden fazla işlev sunarım. Örneğin bir komutu çalıştıracak bir uygulama. Ama içerisinde başka bir method daha var o da eğer kullanıcı tarafından özellikle çağırılır ise devreye girsin isterim. İşte burada uygulama schedule task tarafından başlatılır ve console um 3-4 saniye bekler. Eğer kullanıcı ekrana bir şey yazıp enter yapmazsa anlar ki schedule tarafından otomatik olarak çalıştırılmış. O zaman yapması gereken komutu çalıştırır ve kapanır.

Sizin de ihtiyacınıza ve yaratıcılığınıza bağlı olarak işinize yarayabilecek bir kod olduğunu düşünüyorum.

0 0 votes
Article Rating
Tarih:Çerez Bilgiler
Subscribe
Bildir
guest
0 Yorum
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x