C# kodda bildirim sesi çalınamadı hatası

EnesBeyy

Hectopat
Katılım
8 Şubat 2019
Mesajlar
192
Makaleler
1
Çözümler
1
Kod:
using System;
using System.Net;
using System.IO;
using System.Threading;

namespace SiparisKontrolUygulamasi
{
    class Program
    {
        static Timer timer;
        static bool isOrderNotificationPlaying = false;

        static void Main(string[] args)
        {
            // Konsol penceresinin arka plan rengini siyah yap
            Console.BackgroundColor = ConsoleColor.Black;
            Console.Clear();

            // Zamanlayıcı oluştur
            timer = new Timer(CheckForNewOrder, null, TimeSpan.Zero, TimeSpan.FromMinutes(1));

            Console.WriteLine("Sipariş kontrol uygulaması başlatıldı. Her dakika bir sipariş kontrol edilecek...");
            Console.WriteLine("Uygulamayı sonlandırmak için 'q' tuşuna basın.");

            // Sonsuz döngü
            while (true)
            {
                var key = Console.ReadKey(intercept: true);
                if (key.Key == ConsoleKey.Q)
                    break; // 'q' tuşuna basıldığında döngüyü kır ve programı sonlandır
            }

            // Zamanlayıcıyı temizle
            timer.Dispose();
        }

        static void CheckForNewOrder(object state)
        {
            try
            {
                // JSON yanıtını simüle et
                string responseFromServer = "{\"siparis\":1}";

                // JSON yanıtını analiz etme
                if (responseFromServer.Contains("\"siparis\":1"))
                {
                    Console.WriteLine("Yeni bir sipariş var!");

                    // Arka plan rengini kırmızı yap
                    Console.BackgroundColor = ConsoleColor.Red;
                    Console.Clear();

                    if (!isOrderNotificationPlaying)
                    {
                        isOrderNotificationPlaying = true;
                        PlayNotificationSound();
                    }

                    // Kullanıcı ENTER tuşuna basana kadar bekle
                    while (!Console.KeyAvailable || Console.ReadKey(true).Key != ConsoleKey.Enter) { }

                    // Bildirim sesini durdur
                    isOrderNotificationPlaying = false;

                    // Arka plan rengini siyah yap
                    Console.ResetColor();
                    Console.Clear();
                }
                else
                {
                    Console.WriteLine("Yeni sipariş yok.");
                    isOrderNotificationPlaying = false;
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("Hata oluştu: " + ex.Message);
            }
        }

        static void PlayNotificationSound()
        {
            try
            {
                // Bildirim sesi çalma
                using (var player = new System.Media.SoundPlayer(@"Properties/bildirimsesi.mp3"))
                {
                    player.Play();
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("Bildirim sesi çalınırken bir hata oluştu: " + ex.Message);
            }
        }
    }
}


Kodun işi şu C# ile bir masaüstü uygulaması yapmam istendi ama ben pek bilmiyorum. Konsolda bu kadar ilerleyebildim. Attığımız linkten JSON yanıtı alacak ve yanıt 1 ise ekrana yeni sipariş var yazacak, bildirim sesi çalacak ve arka plan rengi siyahtan kırmızıya dönecek. Kişi entera basana kadar arka plan kırmızı kalmaya ve bildirim sesi çalmaya devam edecek. Kişi Q'ya basınca da uygulama kapanacak. Console değil de forms olarak istediler ama maalesef onu kullanmayı bilmiyorum. Yardımcı olabilecekler var mı? Forms olursa da enter yerine sayfadaki butona basarak durduracak. Şu an çalıştırdığımda bildirim sesi çalınamadı hatası alıyorum. Bildirim sesini nasıl ekleyeceğimi bulamadım.
 
Son düzenleyen: Moderatör:
Kod:
using System;
using System.Net;
using System.IO;
using System.Threading;

namespace SiparisKontrolUygulamasi
{
    class Program
    {
        static Timer timer;
        static bool isOrderNotificationPlaying = false;

        static void Main(string[] args)
        {
            // Konsol penceresinin arka plan rengini siyah yap
            Console.BackgroundColor = ConsoleColor.Black;
            Console.Clear();

            // Zamanlayıcı oluştur
            timer = new Timer(CheckForNewOrder, null, TimeSpan.Zero, TimeSpan.FromMinutes(1));

            Console.WriteLine("Sipariş kontrol uygulaması başlatıldı. Her dakika bir sipariş kontrol edilecek...");
            Console.WriteLine("Uygulamayı sonlandırmak için 'q' tuşuna basın.");

            // Sonsuz döngü
            while (true)
            {
                var key = Console.ReadKey(intercept: true);
                if (key.Key == ConsoleKey.Q)
                    break; // 'q' tuşuna basıldığında döngüyü kır ve programı sonlandır
            }

            // Zamanlayıcıyı temizle
            timer.Dispose();
        }

        static void CheckForNewOrder(object state)
        {
            try
            {
                // JSON yanıtını simüle et
                string responseFromServer = "{\"siparis\":1}";

                // JSON yanıtını analiz etme
                if (responseFromServer.Contains("\"siparis\":1"))
                {
                    Console.WriteLine("Yeni bir sipariş var!");

                    // Arka plan rengini kırmızı yap
                    Console.BackgroundColor = ConsoleColor.Red;
                    Console.Clear();

                    if (!isOrderNotificationPlaying)
                    {
                        isOrderNotificationPlaying = true;
                        PlayNotificationSound();
                    }

                    // Kullanıcı ENTER tuşuna basana kadar bekle
                    while (!Console.KeyAvailable || Console.ReadKey(true).Key != ConsoleKey.Enter) { }

                    // Bildirim sesini durdur
                    isOrderNotificationPlaying = false;

                    // Arka plan rengini siyah yap
                    Console.ResetColor();
                    Console.Clear();
                }
                else
                {
                    Console.WriteLine("Yeni sipariş yok.");
                    isOrderNotificationPlaying = false;
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("Hata oluştu: " + ex.Message);
            }
        }

        static void PlayNotificationSound()
        {
            try
            {
                // Bildirim sesi çalma
                using (var player = new System.Media.SoundPlayer(@"Properties/bildirimsesi.mp3"))
                {
                    player.Play();
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("Bildirim sesi çalınırken bir hata oluştu: " + ex.Message);
            }
        }
    }
}


Kodun işi şu C# ile bir masaüstü uygulaması yapmam istendi ama ben pek bilmiyorum. Konsolda bu kadar ilerleyebildim. Attığımız linkten JSON yanıtı alacak ve yanıt 1 ise ekrana yeni sipariş var yazacak, bildirim sesi çalacak ve arka plan rengi siyahtan kırmızıya dönecek. Kişi entera basana kadar arka plan kırmızı kalmaya ve bildirim sesi çalmaya devam edecek. Kişi Q'ya basınca da uygulama kapanacak. Console değil de forms olarak istediler ama maalesef onu kullanmayı bilmiyorum. Yardımcı olabilecekler var mı? Forms olursa da enter yerine sayfadaki butona basarak durduracak. Şu an çalıştırdığımda bildirim sesi çalınamadı hatası alıyorum. Bildirim sesini nasıl ekleyeceğimi bulamadım.
ChatGPT ile mi yazdın bu kodu ?
 
Aldığınız hatayı göstermemişsiniz. Ayrıca sunucudan veri de çekmiyorsunuz. Sadece simüle ediyorsunuz.
 
Aldığınız hatayı göstermemişsiniz. Ayrıca sunucudan veri de çekmiyorsunuz. Sadece simüle ediyorsunuz.
JSON dosyası hazır olmadığı için direkt 1 döndürüyorum şuan kodda test etmek için. Aldığım hatada şu:
normalde ekran sadece sipariş görünce kırmızı olmalı ve ben entera basana kadar bildirim sesi çalmalı ama ses dosyasını yükleyemediğimden dolayı bu ekran geliyor direkt
1711110864035.png
 

Yeni konular

Geri
Yukarı