我在网上看了很多关于等待虚方法的坏处。我只是想知道可能的后果是什么?如果我通过网络从另一台机器获取数据,它会不会随着时间的推移而减慢我的应用程序?(我使用Task.Run并且它工作正常但只是有替代方案吗?)
CallTheCurrentWFControls()
从本地计算机上的json文件加载数据,但我的异步方法只获取网络上的列表索引。
我发现我的自我使用了异步空洞,我怎么能打破这种模式?我缺少MVVM模式的一部分(在绑定列表框中处理选择的异步方法)?
MainWindow _MainWindow = Application.Current.MainWindow as MainWindow;
private ObservableCollection<WFControl> _CurrentFilteredControls;
public ObservableCollection<WFControl> CurrentFilteredControls
{
get { return _CurrentFilteredControls; }
set
{
if (_CurrentFilteredControls != value)
{
_CurrentFilteredControls = value;
OnPropertyChanged();
}
}
}
private WFControl _SelectedCurrentFilteredControls;
public WFControl SelectedCurrentFilteredControls
{
get { return _SelectedCurrentFilteredControls; }
set
{
if (_SelectedCurrentFilteredControls != value)
{
_SelectedCurrentFilteredControls = value;
CallTheCurrentWFControls();
Task.Run(() => _MainWindow.UpdateIndex());
OnPropertyChanged();
}
}
}
public async void UpdateIndex()
{
try
{
object o = await GetVentuxIndex(".Index");
}
catch (Exception ex)
{
LogFileController.WriteCurrentErrorOrWarningToXmlFile(ex.Message, "UpdateIndex");
}
}
WPF:
<ListBox x:Name="lbx" ItemsSource="{Binding VM.CurrentFilteredControls, Mode=TwoWay}" ItemContainerStyle="{StaticResource listContainerStyle}" ItemTemplate="{DynamicResource dtWFC}" SelectedItem="{Binding VM.SelectedCurrentFilteredControls, Mode=TwoWay}" HorizontalAlignment="Right" Width="500" Margin="0,102,140,0" Height="338" VerticalAlignment="Top" Grid.Column="3" BorderThickness="4" BorderBrush="Black" />