using System; using System.Threading.Tasks; using System.Windows.Controls; using PatcherServer.Helper; namespace PatcherServer.XAML { /// /// Interaction logic for LogViewer.xaml /// public partial class LogViewer : UserControl { private TaskScheduler uiScheduler; public LogViewer() { InitializeComponent(); uiScheduler = TaskScheduler.FromCurrentSynchronizationContext(); try { LogHelper.Instance.LogEvent += OnLog; } catch { return; } } private void OnLog(object sender, LogEventArgs e) { Log(e.Message); } public void Log(string message) { Task t = new Task(() => { logEvents.Items.Refresh(); logEvents.ScrollIntoView(logEvents.Items[logEvents.Items.Count - 1]); }); t.Start(uiScheduler); } } }