c# - 尝试更新时 UI 被阻止
问题描述
我想开始学习异步,我已经启动了一个小应用程序来做到这一点。我从文件中读取并更新我的 UI,但是当我尝试更新时 UI 被阻塞。我有以下命令和方法:
LoadTextFileCommand = new RelayCommand(async () => await LoadTextFileExecute());
private async Task LoadTextFileExecute()
{
var openFileDialog = new OpenFileDialog();
if (openFileDialog.ShowDialog() != true)
return;
var result = await ReadFileAsync(openFileDialog.FileName);
Text = Encoding.Default.GetString(result);
Debug.WriteLine(Encoding.Default.GetString(result));
}
public async Task<byte[]> ReadFileAsync(string path)
{
using (var fileStream = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.Read))
{
var result = new byte[fileStream.Length];
await fileStream.ReadAsync(result, 0, (int)fileStream.Length);
return result;
}
}
<TextBox
Grid.Row="1"
Margin="10,10,10,10"
TextWrapping="Wrap"
VerticalScrollBarVisibility="Auto"
Text="{Binding Path=Text, Mode=TwoWay}" />
Debug.WriteLine 它的写入速度比 UI 更新速度快。当我尝试更新 Text(绑定到文本框)时,UI 会被阻止几秒钟。我不确定我需要更改什么,以便在阅读文本和更新 UI 时在我的应用程序上执行其他任务。
解决方案
推荐阅读
- android - 相对布局标高不显示阴影
- netsuite - 对报表的基础集合实施 ANY 过滤器
- python - 每次调用时刷新配置变量值
- java - 如何在 3rd 方库中查找依赖冲突
- javascript - 使用 Prometheus 监控 Angular 前端
- reactjs - React 如何基于数组数据渲染多个实例
- javascript - Docusign:如何知道哪个签名者签署了哪个信封文件?
- json - 如何从 AWS API Gateway cloudwatch 日志中获取用户的公共 IP?
- kotlin - 我可以从接口中的另一个泛型声明中解析泛型类型吗?
- spring - 无法在 Spring Boot 安全性中公开 swagger doc ui/api