【发布时间】:2022-06-24 11:36:15
【问题描述】:
我有一个跟踪监听器:
public class WindowTraceListener : System.Diagnostics.TraceListener
{
Model.TraceListener _value;
public WindowTraceListener(Model.TraceListener value)
{
_value = nessusToChecklist;
}
public override void Write(string message)
{
_value.TraceOutput += message;
}
public override void WriteLine(string message)
{
_value.TraceOutput += (message + Environment.NewLine);
}
}
还有一个 POCO:
public class TraceListener: ObservableRecipient
{
private string _TraceOutput;
public string TraceOutput
{
get => _TraceOutput;
set => SetProperty(ref _TraceOutput, value, true, "TraceOutput");
}
}
绑定到文本框:
<Grid Grid.Row="2" BorderBrush="Gray" BorderThickness="2" Margin="10,0">
<ScrollViewer Name ="scrollTraceOutput" >
<TextBox Name="txtTraceOutput" TextWrapping="Wrap" Text="{Binding TraceListener.TraceOutput, UpdateSourceTrigger=PropertyChanged}" IsReadOnly="True" TextChanged="TextBox_TextChanged" ></TextBox>
</ScrollViewer>
</Grid>
问题是文本框的更新被延迟并且不是实时发生的。我认为我没有 GUI 线程问题,因为如果进程足够长,则在处理期间会发生更新。我只是希望更新更快。
例如,某些处理有一个...而我想要“.”显示为被跟踪。
【问题讨论】:
-
你能给我们一个minimal reproducible example吗,我们不能用上面的代码做一个repro示例,它错过了模型类和其他细节。