簡體   English   中英

C#,線程,內存

[英]C#, Thread, Memory

今天,我想知道如何將圖像保存到Stream(確實在內存中,可能我沒有使用適當的術語)並從另一個線程讀取它。

為此,我認為可以執行以下步驟:A-在第一個線程中:1-從文件創建圖像對象(System.Drawing)2-創建縮略圖3-將縮略圖保存到Stream(System.IO)4-將Stream對象發送到第二個線程。

B-在第二個線程中:1-從第一個線程接收流2-使用此流創建BitmapImage對象3-在UI上顯示。 (WPF)

ks

我已經檢索了部分代碼,向您展示了我所做的事情:

在檢查我的某些文件夾中圖像的線程中:

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_recieve”由“ evt_send_img”執行;

謝謝

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM