RichTextBox.LoadFile() Prozess kann nicht darauf zugreifen

  • C#

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    RichTextBox.LoadFile() Prozess kann nicht darauf zugreifen

    Hallo,

    ich habe ein kleines Problem mit einer RichTextBox bzw. mit .rtf files.
    In meiner Form gibt es einen Button mit dem ich eine .rtf Datei die bereits existierts mit WordPad öffne um diese zu bearbeiten.
    Außerdem setzte ich einen FileSystemWatcher auf diese Datei an, sodass sobald diese über WordPad gespeichert wird zur Vorschau in eine RichTextBox geladen wird.

    Folgendes passiert:
    Wenn ich den Button clicke, dann wird die Datei wie gewünscht mit WordPad geöffnet. Sobald ich speichere wird auch wie gewünscht die Datei in die RichTextBox geladen.
    Wenn ich die Datei aber mehrmals über WordPad speichere, dann bekomme ich folgende Fehlermeldung (manchmal nach dem 2. mal, manchmal nach dem 3. mal speichern)

    ​Additional information: Der Prozess kann nicht auf die Datei "xxxx\bin\Debug\texte\18.rtf" zugreifen, da sie von einem anderen Prozess verwendet wird.


    C#-Quellcode

    1. private void button4_Click(object sender, EventArgs e)
    2. {
    3. FileSystemWatcher fsw = new FileSystemWatcher();
    4. fsw.Path = Application.StartupPath + "\\texte\\";
    5. fsw.Filter = Path.GetFileName(this._Text.GetPath());
    6. fsw.NotifyFilter = NotifyFilters.LastWrite;
    7. fsw.Changed += Fsw_Changed;
    8. fsw.EnableRaisingEvents = true;
    9. Process.Start(this._Text.GetPath());
    10. }
    11. private void Fsw_Changed(object sender, FileSystemEventArgs e)
    12. {
    13. richTextBox1.Invoke(new Action(() => {
    14. richTextBox1.LoadFile(this._Text.GetPath());
    15. }));
    16. }
    Warum startest du WordPad nicht per Process.Start und wartest bis es beendet wurde, wäre das nicht genau das was du machen willst??

    stackoverflow.com/a/12603520/7113876

    Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##

    @windowsfan Probierma in Fsw_Changed() vorn ein Sleep(500) oder so.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Das problem das ich hier sehe ist das man die Datei im Wordpad auch speichern könnte OHNE WordPad zu schliessen oder? Dann bringen die 500ms auch nicht viel. ;(

    Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##