wpf耗时的操作和调度程序

时间:2013-04-18 20:02:50

标签: c# wpf multithreading listview

我必须监控网络上的所有帧。为此,我创建了2 ListViews,一个用于显示帧名称,dlc,有效负载和时间戳。我有一个事件在收到新帧并在帧ListView中进行更新时触发。  如果我在lv中选择一个帧,则第二个ListView将填充有关所选帧的小信息。当事件触发且帧有效负载发生变化时,所选行和整个第二ListView都会更新。 对于所有这些工作,我只有一个Dispatcher.Invoke,似乎GUI留下了更新。我应该使用两个调度员吗? 一个用于第一个ListView的帧更新,另一个用于另一个ListView的帧更新?我应该为每个人选择哪些优先事项?此时我使用的是第6级,名为:Loaded。

<ListView ItemsSource="{StaticResource frames}" 
          Grid.Row="0" 
          Margin="0,1,0,1" 
          Name="lvFrames"
          VerticalContentAlignment="Top" 
          ItemContainerStyleSelector="{StaticResource itemSelector}"
          FontSize="12"
          VirtualizingStackPanel.VirtualizationMode="Recycling"
          VirtualizingStackPanel.IsVirtualizing="True"
          BorderThickness="1"
          BorderBrush="Gray" 
          Grid.ColumnSpan="2" 
          SelectionChanged="lvFrames_SelectionChanged">

    <ListView.View>
        <GridView>
            <GridViewColumn Header="Time" DisplayMemberBinding="{Binding Time}" Width="55"/>
            <GridViewColumn Header="Dir" DisplayMemberBinding="{Binding Dir}" Width="40"/>
            <GridViewColumn Header="Id" DisplayMemberBinding="{Binding Id}" Width="40"/>
            <GridViewColumn Header="Name" DisplayMemberBinding="{Binding Name}" Width="125"/>
            <GridViewColumn Header="Dlc" DisplayMemberBinding="{Binding Dlc}" Width="40" />
            <GridViewColumn Header="Data" DisplayMemberBinding="{Binding Data}" Width="150" />
        </GridView>
    </ListView.View>
</ListView>

这是第一个XAML的{​​{1}}:

ListView

这一个用于信号<ListView ItemsSource="{StaticResource signals}" Grid.Row="0" Margin="0,1,-0.48,0" Name="lvSignals" VerticalContentAlignment="Bottom" FontSize="12" VirtualizingStackPanel.VirtualizationMode="Recycling" VirtualizingStackPanel.IsVirtualizing="True" BorderThickness="1" BorderBrush="Gray" Grid.ColumnSpan="2" VerticalAlignment="Stretch"> <ListView.View> <GridView> <GridViewColumn Header="Signal Name" DisplayMemberBinding="{Binding Name}" Width="160" /> <GridViewColumn Header="Signal Value" DisplayMemberBinding="{Binding Value}" Width="100"/> </GridView> </ListView.View> </ListView>

0 个答案:

没有答案