作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有以下代码,从第一个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
});
task.ContinueWith(t =>
{
// Update UI here
}, TaskScheduler.FromCurrentSynchronizationContext());
关于c# - 当我们使用双流时,GUI会卡住,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18237874/
我是一名优秀的程序员,十分优秀!