永发信息网

如何异步读取文件

答案:2  悬赏:80  手机版
解决时间 2021-03-10 20:46
如何异步读取文件
最佳答案
异步读取文件,读取完成之后触发事件,通知主线程。主线程与读取文件的线程互相独立。
全部回答

public delegate void mydelegatefile(byte[] bb);

public class readfilestate

    {

    public  filestream fs;

    public  byte[] bytefile;

    public int bytenum;

    }

    /// <summary>

    /// 打开一个文本文件,显示在richtextbox中

    /// </summary>

    /// <param name="sender"></param>

    /// <param name="e"></param>

    private void o_fs_click(object sender, eventargs e)

    {

    string s = "";

    ofd.filter = "文本文件|*.txt|全部文件|*.*";

        ofd.defaultext = "txt";

    ofd.filename = "";

    try

    {

    if (ofd.showdialog() == dialogresult.ok)

    {

    s = ofd.filename;

    fs = new filestream(s,filemode.open,fileaccess.read);

    readfilestate rfs = new readfilestate();

    rfs.bytefile = new byte[fs.length];

    rfs.fs = fs;

    rfs.bytenum = (int)fs.length;

    asynccallback ac = new asynccallback(getfileresult);

    fs.beginread(rfs.bytefile, 0, (int)fs.length, ac, rfs);

    }

    }

    catch (ioexception iex)

    {

    messagebox.show(iex.message);

    }

    }

    void getfileresult(iasyncresult iar)

    {

    try

    {

    thread.sleep(5000);

    readfilestate rfs = (readfilestate)iar.asyncstate;

    if (rfs != null)

    {

    filestream fs = rfs.fs;

    int n = fs.endread(iar);

    if (rfs.bytefile != null)

    {

    this.invoke(mdd, rfs.bytefile);

    }

    else { messagebox.show("当前数组值为空."); }

      }

    }

    catch (ioexception iex)

    {

    messagebox.show(iex.message);

    }

    finally

    {

    fs.close();

    }

    }

    void showfile(byte[] y)

    {

     //string s = "";

    //for (int i = 0; i < y.getlength(0); ++i)

    //{

    //    s = s + y[i].tostring()+" ";

    //}

    string ss = encoding.getencoding(936).getstring(y);

    rtb.text = ss;

    //rtb.text ="读取文件字符串的长度是:"+ i.tostring();

    }

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
my,to,help,would,mind,coming,you,for,you连
网上购买火车票后经常退票会有什么后果?
全网通一方天手机卖场地址有知道的么?有点事
白茶的功效
有没有例如直线AB真包含于平面ABC这种说法,
中考成绩420分是不是很差?
在下列实验中,实验装置正确的是CA. B. C. D.
关于3ds的待机问题,很省电吗
工会委员调离其他岗位后,能否保留委员身份
公务员能调入公安局吗?如果可以调入,能取得
文登市放心粮油市场葛家分部我想知道这个在什
刘翔在第十一届世界田径锦标赛中,110米跨栏的
本人现在在马来,我持有中国护照,请问能否在
玻璃块掉厕所洞了怎么办!
韵达快递都是几点上班
推荐资讯
双侧输卵管梗阻怎样治
双悦门窗蓝田直营店怎么去啊,有知道地址的么
美能达3510复印机刮板在复印机的那个位置?难
眼镜框上固定的那块胶怎么变干净啊
县城里的亨得利眼镜店到底是真的还是假的?
林业间伐蓄积量怎样计,每亩留多少株
微信上主动加我的妹妹是骗子吗
一条20CM金鱼一天喂多少鱼食
谢霆锋和许嵩那个学历高
破坏别人的婚姻,最好的方法是?
有一种药材叫什么烟
VOCALOID4做出来的音频怎么导成mp3格式,而且
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?