gpt4 book ai didi

c# - 当我们使用双流时,GUI会卡住

转载 作者:行者123 更新时间:2023-12-03 13:20:27 25 4
gpt4 key购买 nike

我有以下代码,从第一个Stream读取文件,并对内容进行一些解释,然后将其写入第二个文件,我面临一个问题,当我拥有一个大文件时,GUI位于WPF坚持不懈,我尝试将阅读和写作操作放在:

 Application.Current.Dispatcher.BeginInvoke(DispatcherPriority.Normal, new Action(() =>
{
// Here
});

在下面的代码中:
using (StreamReader streamReader = new StreamReader(File.Open(fileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)))
using (StreamWriter streamWriter = new StreamWriter(File.Open("Compressed_" + splitFilePath[splitFilePath.Length - 1], FileMode.Create, FileAccess.Write, FileShare.ReadWrite)))
{
// Here are the interpretations of the code
while ((dataSize = streamReader.ReadBlock(buffer, 0, BufferSize)) > 0)
{
streamWriter.Write(.....);
}
}

谁能帮我??
谢谢

最佳答案

如果要避免阻塞UI,则需要将编写内容移到Background线程中。

这可以通过Task.Factory.StartNew完成:

var task = Task.Factory.StartNew( () =>
{
using (StreamReader streamReader //.. Your code

});

默认情况下,这将导致它在ThreadPool线程上运行。如果需要在完成时更新用户界面,则可以在UI线程上使用延续:
task.ContinueWith(t =>
{
// Update UI here
}, TaskScheduler.FromCurrentSynchronizationContext());

关于c# - 当我们使用双流时,GUI会卡住,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18237874/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com