• 22-09-2023, 13:30:05
    #1
    Arkadaşlar merhaba unity'de bir projem var. Firebase realtime database'i kullanıyorum. Bir dinleyici oluşturuyorum. Daha sonra bu dinleyiciyi durdurmak istiyorum ama durduramıyorum. Kafayı yemek üzereyim. Kodlar aşağıda yardımcı olur musunuz? Şimdiden teşekkürler.

    private void StartRoomListener(string oda)
        {
            if (!isRoomListenerActive)
            {
                isRoomListenerActive = true;
    
                databaseReference.Child("odalar2").Child(oda).Child("durum").ValueChanged += HandleRoomValueChanged;
            }
        } 
        private void HandleRoomValueChanged(object sender, ValueChangedEventArgs args)
        {
            if (args.Snapshot != null && args.Snapshot.Exists)
            {
                string json = args.Snapshot.GetRawJsonValue();
    
                if (int.Parse(json) == 1)
                {
                    Debug.Log("Durum 1 oldu");
                    
                }
            }
        } 
        private void StopRoomListener(string oda)
        {
            if (isRoomListenerActive)
            {
                isRoomListenerActive = false;
                databaseReference.Child("odalar2").Child(oda).Child("durum").ValueChanged -= HandleRoomValueChanged;
            }
        }
  • 22-09-2023, 14:36:19
    #2
    degisken ata
    private EventHandler<ValueChangedEventArgs> roomValueChangedHandler;
    private void StartRoomListener(string oda)
        {
            if (!isRoomListenerActive)
            {
                isRoomListenerActive = true;
     
                databaseReference.Child("odalar2").Child(oda).Child("durum").ValueChanged += HandleRoomValueChanged;
            }
        }
    satırını böyle degiştir
        private void StartRoomListener(string oda)
        {
            if (!isRoomListenerActive)
            {
                isRoomListenerActive = true;
                roomValueChangedHandler = HandleRoomValueChanged;
                databaseReference.Child("odalar2").Child(oda).Child("durum").ValueChanged += roomValueChangedHandler;
            }
        }
    satirini
        private void StopRoomListener(string oda)
        {
            if (isRoomListenerActive)
            {
                isRoomListenerActive = false;
                databaseReference.Child("odalar2").Child(oda).Child("durum").ValueChanged -= HandleRoomValueChanged;
            }
        }
    böyle degiştir
       private void StopRoomListener(string oda)
        {
            if (isRoomListenerActive)
            {
                isRoomListenerActive = false;
                if (roomValueChangedHandler != null)
                {
                    databaseReference.Child("odalar2").Child(oda).Child("durum").ValueChanged -= roomValueChangedHandler;
                    roomValueChangedHandler = null;
                }
            }
        }