'Die Anwendung, die als Schnittstelle bezeichnet wird, die für einen anderen Thread untersagt wurdeC#

Ein Treffpunkt für C#-Programmierer
Anonymous
 'Die Anwendung, die als Schnittstelle bezeichnet wird, die für einen anderen Thread untersagt wurde

Post by Anonymous »

Ich versuche, einen Thread zu erstellen und die UI -Steuerelemente darin zu manipulieren. Dann habe ich eine Ausnahme aufgenommen

Code: Select all

System.Runtime.InteropServices.COMException: 'The application called an interface that was marshalled for a different thread.< /code>

Durch die Suche fand ich, dass dies ein sehr häufiges [url=viewtopic.php?t=15738]Problem[/url] ist.Windows.ApplicationModel.Core.CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.Normal,
() =>
{
// Your UI update code goes here!
}
);
< /code>
Aber dies verursacht eine weitere Ausnahme

System.InvalidOperationException: 'A method was called at an unexpected time.

Ich kenne nicht den richtigen Weg

Code: Select all

private void MessageReceived(string message_content)
{
InvertedListView.Items.Add(new Message(message_content, DateTime.Now,HorizontalAlignment.Left));
}

static bool flag = true;

Thread thread = new Thread(() =>
{
FileSystemWatcher watcher = new FileSystemWatcher();
watcher.Path = "C:\\Users";
watcher.Filter = "text.txt";
watcher.NotifyFilter = NotifyFilters.LastWrite;
watcher.Changed += OnChanged;
Debug.WriteLine("START!");
watcher.EnableRaisingEvents = true;

void OnChanged(object sender, FileSystemEventArgs e)
{
if (flag)
{
Debug.WriteLine("OnChanged");
Thread.Sleep(10);
var lastLine = File.ReadLines(watcher.Path + watcher.Filter, Encoding.UTF8).Last();
MessageReceived(lastline); // The exception happened here
Debug.WriteLine(lastLine);
flag = false;
}
else
{
flag = true;
}
}
});

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post