c#,线程,内存

本文关键字:内存 线程 | 更新日期: 2023-09-27 18:16:23

今天我想知道如何将图像保存到流(真正在内存中有可能我不使用适当的术语)并从另一个线程读取它。

要做到这一点,我认为要继续以下步骤:A -在第一个线程:从文件中创建图像对象(System.Drawing)2 -创建缩略图3 -保存缩略图到流(System.IO)发送流对象到第二个线程。

B -在第二个线程中:1 -从第一个线程接收流用这个流创建BitmapImage对象3 -在UI上显示。(Wpf)

呢。

c#,线程,内存

我已经检索了我的一部分代码,我向您展示了我所做的:

在线程检查我的图像在一些文件夹:

public void CreateImgObj(object sender)
{
    try
    {
        FileStream fs = File.Open((string)sender, FileMode.Open);
        Bitmap dImg = new Bitmap(fs);
        MemoryStream ms = new MemoryStream();
        dImg.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
        BitmapImage bi_img = new BitmapImage();
        bi_img.BeginInit();
        bi_img.StreamSource = new MemoryStream(ms.ToArray());
        bi_img.EndInit();
        evt_send_img(bi_img);
    }
    catch (Exception e)
    {
        evt_error(e);
    }
}

UI线程:

    private void img_recieve(object sender)
    {
        try
        {
            Dispatcher.BeginInvoke(DispatcherPriority.Normal, new Action(() =>
                 {
                     items.Add(new Img { Img_In = (BitmapImage)sender });
                 }));
        }
        catch (Exception e)
        {
            messageerreur(e);
        }
    }

注意:" img_receive "是由"evt_send_img"执行的;

呢?