C# FileSystemWatcher Disposed sich von selbst?

Hallo,

warum auch immer, aber mein FileSystemWatcher Disposed sich immer von selbst. Ich benutze eine Console Anwendung (.Net Framework.4.8).

Das komische, ich habe das mal bei Windows Forms benutzt vor 2 Tagen, da lief es wunderbar, warum disposed der sofort in der Console?

log.Info(Path.GetDirectoryName(args[0]));
            try
            {
                using (fileSystemWatcher = new FileSystemWatcher(Path.GetDirectoryName(args[0])))
                {
                    fileSystemWatcher.IncludeSubdirectories = true;
                    fileSystemWatcher.NotifyFilter = NotifyFilters.LastWrite | NotifyFilters.Size | NotifyFilters.Attributes | NotifyFilters.CreationTime;
                    fileSystemWatcher.Filter = "*.js";
                    fileSystemWatcher.Changed += new FileSystemEventHandler(JSChanged);
                    fileSystemWatcher.Disposed += new EventHandler(JSDisposed);
                    fileSystemWatcher.Error += new ErrorEventHandler(JSError);
                    fileSystemWatcher.EnableRaisingEvents = true;
                }
            }
            catch(Exception ex)
            {
                log.Error(ex.Message);
            }

Der Ordnerpfad ist korrekt, das habe ich oben mit log.Info geprüft. Habe ich irgendwas übersehen?

Es wird das fileSystemWatcher.Disposed Event aufgerufen

Danke schon mal im Voraus

Bild zum Beitrag
Computer, programmieren, C Sharp, CS, Visual Studio, .net-Framework
Wie kann ich "Object reference not set to an instance of an object" beheben?

Hallo,

ich bin dabei, ein Spiel zu machen und bekomme die ganze Zeit den Fehler

Object reference not set to an instance of an object

bei dem Code.

using System;
using System.Collections.Generic;
using UnityEngine;
using Random = UnityEngine.Random;
using Object = UnityEngine.Object;

// Token: 0x02000007 RID: 7
public class LevelGeneration : MonoBehaviour
{
  // Token: 0x06000015 RID: 21 RVA: 0x0000246C File Offset: 0x0000066C
  private void Awake()
  {
    this.lastEndPosition = this.levelPart_Start.Find("EndPosition").position;
    int num = 5;
    
    for (int i = 0; i < num; i++)
    {
      this.spawnLevelPart();
    }
  }

  // Token: 0x06000016 RID: 22 RVA: 0x000024A8 File Offset: 0x000006A8
  private void Update()
  {
    if (Vector3.Distance(this.player.transform.position, this.lastEndPosition) < 200f)
    {
      this.spawnLevelPart();
    }
  }

  // Token: 0x06000017 RID: 23 RVA: 0x000024D4 File Offset: 0x000006D4
  private Transform SpawnLevelPart(Transform levelPart, Vector3 spawnPosition)
  {
    Transform transform = Object.Instantiate<Transform>(levelPart, spawnPosition, Quaternion.identity);
    this.putRight(transform);
    return transform;
  }

  // Token: 0x06000018 RID: 24 RVA: 0x000024F8 File Offset: 0x000006F8
  private void spawnLevelPart()
  {
    Transform levelPart = this.levelPartList[Random.Range(0, this.levelPartList.Count)];
    Transform transform = this.SpawnLevelPart(levelPart, this.lastEndPosition);
    this.lastEndPosition = transform.Find("EndPosition").position;
  }

  // Token: 0x06000019 RID: 25 RVA: 0x00002548 File Offset: 0x00000748
  private void putRight(Transform levelPart)
  {
    this.bottomPosition.y = levelPart.Find("bottom").position.y;
    this.topPosition.y = levelPart.Find("top").position.y;

    if (this.bottomPosition.y <= -10f)
    {
      levelPart.transform.position += new Vector3(0f, 3f, 0f);
    }

    if (this.topPosition.y >= 10f)
    {
      levelPart.transform.position -= new Vector3(0f, 3f, 0f);
    }
  }

  // Token: 0x04000013 RID: 19
  private const float PLAYER_DISTANCE_SPAWN_LEVEL_PART = 200f;

  // Token: 0x04000014 RID: 20
  [Header("Level Parts")]
  [SerializeField]
  private Transform levelPart_Start;

  // Token: 0x04000015 RID: 21
  [SerializeField]
  private List<Transform> levelPartList;  

  // Token: 0x04000016 RID: 22
  [Header("Objects")]
  [SerializeField]
  private GameObject player;

  // Token: 0x04000017 RID: 23
  private Vector3 lastEndPosition;

  // Token: 0x04000018 RID: 24
  private Vector3 bottomPosition;

  // Token: 0x04000019 RID: 25
  private Vector3 topPosition;
}

Ich danke jetzt schon für die Antworten. ^^

Computer, programmieren, C Sharp, Unity
ich soll zwei Dateien vergleichen C#?

Programmiere noch nicht so lange, brauche deshalb eure Hilfe Ich soll zwei Dateien A & B mit einander vergleichen. der Unterschied soll in eine dritte Datei geschrieben werden. Alles was in Datei A geändert wurde soll in die dritte datei mit rot markiert werden. Alles was neu hinzugefügt ist soll mit blau markiert werden. könnt ihr mir bitte helfen??

public void Dateivergleich(string A, string B)
    {
      string path = @"C:\Users\Z0009918\Desktop\Test1";
      string[] linesA = File.ReadAllLines(A);
      string[] linesB = File.ReadAllLines(B);
      //IList<string> onlyB = linesB.Except(linesA).ToList();
      //for (var i = 0; i < onlyB.Count; ++i)
      // {
      //  if (onlyB[i].StartsWith("%"))
       
      //{
       //    onlyB[i] = "";
       // }
        IEnumerable<string> onlyB = linesB.Except(linesA);
        //}
        File.WriteAllLines(Path.Combine(path, "result.txt"), onlyB);
        
      // }
      /*for (int i = 0; i < linesA.Length; i++)
      {
        string row = linesA[i];
        if (row.StartsWith("%"))
        {
          IEnumerable<string> onlyA = linesB.Except(linesA);
          File.WriteAllLines(Path.Combine(path, "result.txt"), onlyB);
        }
        else
        {
          MessageBox.Show("Fehler");
        }*/
      }
    }
programmieren, C Sharp
C# StringBuilder Werte separieren?

Folgendes:
Ich möchte aus hostname.DisplayName die 2 Werte (HostName und IP-Addresse) seperat in einem eigenen String haben... leider kommen aus hostname.DisplayName beide Werte gleichzeitig aus...

Wie kann ich diese am besten trennen?

Hier das Ergebnis:

Der Code:

StringBuilder clientListMACAddress = new StringBuilder();
                    StringBuilder clientListHostname = new StringBuilder();
                    StringBuilder clientListIPAdress = new StringBuilder();


                    var currentClients = tetheringManager.GetTetheringClients().ToArray();
                    foreach(var client in currentClients)
                    {
                        //MessageBox.Show(client.MacAddress);
                        //string MACAddress = client.MacAddress;
                        clientListMACAddress.AppendLine(client.MacAddress);
                        foreach (var hostname in client.HostNames)
                        {
                            clientListHostname.AppendLine(hostname.DisplayName);
                            //clientListIPAdress.AppendLine(hostname.DisplayName);
                            
                        }
                    }
                    MessageBox.Show("MAC: " + clientListMACAddress.ToString() + " HOST: " + clientListHostname.ToString() + " IP: " + clientListIPAdress.ToString());

Vielen dank im Voraus :)

Mit freundlichen Grüßen

Bild zum Beitrag
Computer, Windows, Microsoft, C Sharp, Informatik, Visual Studio, .net-Framework, Visual Studio 2019
Nicht alle Codepfade geben ein Wert zurück?

Ich bekomme den Fehler, dass nicht alle Codepfade einen Wert zurück geben "Form1.GetKugel()".

Wenn ich das in else stehende so hinstelle ohne else funktioniert es einwandfrei..

ich habe gerade erst angefangen zu lernen und es ist hoffe ich nur ein dämlicher Anfängerfehler :D

private struct Kugel
        {
            public double radius, sg;
        }
        private double gew;
        private Kugel GetKugel()
        {
            
            if (textBox1.Text == "")
            {
                MessageBox.Show("Bitte trage einen Wert ein", "Hinweis", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
            }
            else if (textBox1.Text.Length > 0)
            {
                MessageBox.Show("Bitte trage einen gültigen Wert ein", "Hinweis", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
                textBox1.Clear();
            }
            else
            {
                Kugel kug;
                kug.radius = Convert.ToDouble(textBox1.Text) / 2;
                if (radioButton1.Checked) kug.sg = 1.4D;
                else if (radioButton2.Checked) kug.sg = 2.7D;
                else if (radioButton3.Checked) kug.sg = 3.0D;
                else if (radioButton4.Checked) kug.sg = 7.87D;
                else kug.sg = 11.3D;
                return kug;  
            }
             
        }
Computer, programmieren, C Sharp, Visual Studio
Wie kann ich meinen Button Click so ändern, dass er immer automatisch ausgeführt wird, wenn meine TextBox nicht mehr leer ist?

Ich habe ein DataGrid bei dem ich mit MVVM die Daten beziehe. Jetzt habe ich es so gemacht das wenn ich diesen Button drücke:

<TextBlock Text="&#xE71C;" x:Key="DataGridSelectAllButtonStyle.Content"/>
                <Style x:Key="{ComponentResourceKey ResourceId=DataGridSelectAllButtonStyle, TypeInTargetAssembly={x:Type DataGrid}}"
                    TargetType="{x:Type Button}">
                    <Setter Property="Background" Value="Gray"/>
                    <Setter Property="BorderBrush" Value="White"/>
                    <Setter Property="BorderThickness" Value="0 0 1 0"/>
                    <EventSetter Event="Click" Handler="ClearButton_Click"/>
                    <Setter Property="Content">
                        <Setter.Value>
                            <StackPanel Background="Gray" Height="40" Width="11">
                                <Separator Background="White" Margin="0,17,-1,0"/>
                                <TextBlock Background="{x:Null}" HorizontalAlignment="Center" Height="13"  Margin="0 5 0 0"
                            FontFamily="Segoe MDL2 Assets" FontWeight="Light" FontSize="7"
                            Text="{Binding Text, Source={StaticResource DataGridSelectAllButtonStyle.Content}}">
                                </TextBlock>
                            </StackPanel>
                        </Setter.Value>
                    </Setter>
                </Style>

Und meine TextBoxen nicht leer sind sie dann automatisch geleert werden. Wenn jedoch die TextBoxen nicht leer sind und ich denn Button noch nicht gedrückt habe soll sich der Content von dem Button ändern zu einem Kreuz. Das habe ich bereits jedoch nur bedingt geschafft denn jetzt ist es bei mir so das nur wenn ich auf denn Button Clicke der Content geändert wird und nicht automatisch sobald er erkennt die TextBoxen sind nicht mehr leer. Also mein Ziel ist es das wenn die TextBoxen leer sind das standard Symbol (Content) angezeigt wird und sobald eine der TextBoxen nicht mehr leer sind soll sich der Button Content automatisch in ein Kreuz ändern und nicht wie jetzt das es nur manuell über das Klicken auf den Button funktioniert und sobald alle TextBoxen wieder leer sind soll das Anfangs Symbol(Content gezeigt werden). Und hier ist erstmal mein Code Behind womit ich denn Button content per Click event ändere:

private void ClearButton_Click(object sender, RoutedEventArgs e)
        {
            if (!String.IsNullOrEmpty(IDSearcBox.Text))
            {
                if (sender is FrameworkElement element)
                {
                    TextBlock textBlock = (TextBlock)element.FindResource("DataGridSelectAllButtonStyle.Content");
                    textBlock.Text = textBlock.Text == "\xE711"
                        ? "\xE71C"
                        : "\xE711";
                }
            }
        }
Computer, C Sharp, XAML, Windows Presentation Foundation
C# Kann nicht auf MySql DB (phpMyAdmin) zugreifen?

Ich wollte ein C# Programm schreiben um meine MySql Datenbank zu testen.
Das Programm soll sich mit der DB verbinden und die Datenbank Einträge in eine DataGridView eintragen. Den Code habe ich von hier: https://www.youtube.com/watch?v=SZqIjaizkTM&ab_channel=mhluc%23 (habe ihn aber ein bisschen verändert)
Ich komme jedoch nicht in die Datenbank rein.

Es gibt Probleme bei dem Connection.OpenAsync()

Hier die Exception:

MySql.Data.MySqlClient.MySqlException
 HResult=0x80004005
 Nachricht = Unable to connect to any of the specified MySQL hosts.
 Quelle = MySql.Data
 Stapelüberwachung:
  at MySql.Data.MySqlClient.NativeDriver.Open()
  at MySql.Data.MySqlClient.Driver.Open()
  at MySql.Data.MySqlClient.Driver.Create(MySqlConnectionStringBuilder settings)
  at MySql.Data.MySqlClient.MySqlPool.CreateNewPooledConnection()
  at MySql.Data.MySqlClient.MySqlPool.GetPooledConnection()
  at MySql.Data.MySqlClient.MySqlPool.TryToGetDriver()
  at MySql.Data.MySqlClient.MySqlPool.GetConnection()
  at MySql.Data.MySqlClient.MySqlConnection.Open()
  at System.Data.Common.DbConnection.OpenAsync(CancellationToken cancellationToken)
--- End of stack trace from previous location ---
  at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
  at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
  at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
  at System.Runtime.CompilerServices.TaskAwaiter.GetResult()
  at VoidRaiderDB_Browser.MainWindow.<MenuStripItemClicked>d__3.MoveNext() in D:\Projects\VoidRaiderDB Browser\VoidRaiderDB Browser\MainWindow.cs:line 31

 Diese Ausnahme wurde ursprünglich von dieser Aufrufliste ausgelöst:
  [Externer Code]

Innere Ausnahme 1:
AggregateException: One or more errors occurred. (Es konnte keine Verbindung hergestellt werden, da der Zielcomputer die Verbindung verweigerte.)

Innere Ausnahme 2:
SocketException: Es konnte keine Verbindung hergestellt werden, da der Zielcomputer die Verbindung verweigerte.

glaube ich habe beim Connection String verkackt aber habe keine Ahnung was ich falsch gemacht habe..

Das Passwort/User-Name ist richtig da ich mit den auch in die phpMyAdmin Seite reinkomme

Bild zum Beitrag
Computer, Internet, Software, Technik, programmieren, C Sharp, Datenbank, Informatik, MySQL, Technologie, phpMyAdmin

Meistgelesene Beiträge zum Thema C Sharp