我正在使用异步读取在 C# 中编写一个简单的文件流程序,该程序使用主线程以外的线程进行回调。但是当我尝试在文本框中写入文件内容时出现跨线程异常。这是我的程序:
using System;
namespace Filestream
{
public partial class Form1 : Form
{
FileStream fs;
byte[] fileContents;
AsyncCallback callback;
public Form1()
{
InitializeComponent();
}
private void synbtn_Click(object sender, EventArgs e)
{
openFileDialog1.ShowDialog();
callback = new AsyncCallback(fs_StateChanged);
fs = new FileStream(openFileDialog1.FileName, FileMode.Open, FileAccess.Read, FileShare.Read, 4096, true);
fileContents = new Byte[fs.Length];
fs.BeginRead(fileContents, 0, (int)fs.Length, callback, null);
}
public void fs_StateChanged(IAsyncResult ar)
{
if (ar.IsCompleted)
{
*textBox1.Text = Encoding.UTF8.GetString(fileContents);*
fs.Close();
}
}
}
}
带星号的部分是我得到异常的部分。我尝试使用调用,但我没有运气。有人可以用调用更正这部分代码,这样我就不会得到错误。谢谢。