当前位置:编程学习 > C#/ASP.NET >>

多线程,关于解决给image控件重新绑定数据源的办法。多谢

我要实现如下功能,有一个image控件绑定的是我一个文档的摘要和内容,当我点击图片到时候,弹出这个word文档,此时图片那个窗体隐藏,同时我修改word文档里的内容并保存,我希望能够刷新图片。
说的明白点,就是我修改了什么,图片重新绑定什么内容。

这个过程中,我无法重新绑定image的数据源,原因是因为有一个线程正在使用它,求解决办法。求好心人,帮忙。
代码如下:
            System.Drawing.Image image = mf.GetThumbnailImage(300, 300, null, System.IntPtr.Zero);
            image.Save("C:/temp1.bmp");

   
            //Summary
            imageThumbnails.ToolTip = pageRange.Text;
      
            //load the thumb image into control
            BitmapImage bitmapImage = new BitmapImage();
            bitmapImage.BeginInit();
            bitmapImage.UriSource = new Uri("C:/temp1.bmp", UriKind.Absolute);
            bitmapImage.EndInit();
            imageThumbnails.Source = bitmapImage;
            ((WORD._Application)WordApp).Quit(); --------------------编程问答-------------------- 先沙发再看 --------------------编程问答-------------------- 你用的word 来该图片??
然后 改完图片后 在加载? --------------------编程问答--------------------
引用 2 楼 ly_longyue 的回复:
你用的word 来该图片??
然后 改完图片后 在加载?

是的,我把word存成图片格式,用image控件显示。
第二:我是改完word内容,重新加载图片。图片是不可编辑的。 --------------------编程问答-------------------- 没人知道吗?求解,请教高手,我不知道是不是可以用其他办法来实现这个功能。 --------------------编程问答-------------------- 通过API,参考http://bytes.com/topic/c-sharp/answers/523657-c-printing-content-richtextbox-image-wysiwyg-mode
--------------------编程问答-------------------- 我觉得 是 因为 word 没有关闭 ,图片还在用着 所以不能访问
要判断 word 是否 关闭后在访问 数据源 --------------------编程问答--------------------
引用楼主 cityrode 的回复:
   System.Drawing.Image image = mf.GetThumbnailImage(300, 300, null, System.IntPtr.Zero);
  image.Save("C:/temp1.bmp");

    
  //Summary
  imageThumbnails.ToolTip = pageRange.Text;
    
  //load the thumb image into control
  BitmapImage bitmapImage = new BitmapImage();
  bitmapImage.BeginInit();
  bitmapImage.UriSource = new Uri("C:/temp1.bmp", UriKind.Absolute);
  bitmapImage.EndInit();
  imageThumbnails.Source = bitmapImage;
  ((WORD._Application)WordApp).Quit();


既然你在修改word文档的时候窗体是隐藏的,那么你可以将"C:/temp1.bmp"图片所占用的资源释放,用Dispose()方法,在修改完word时在重新制定image的资源文件即可 --------------------编程问答-------------------- --------------------编程问答--------------------
引用楼主 cityrode 的回复:
我要实现如下功能,有一个image控件绑定的是我一个文档的摘要和内容,当我点击图片到时候,弹出这个word文档,此时图片那个窗体隐藏,同时我修改word文档里的内容并保存,我希望能够刷新图片。
说的明白点,就是我修改了什么,图片重新绑定什么内容。

这个过程中,我无法重新绑定image的数据源,原因是因为有一个线程正在使用它,求解决办法。求好心人,帮忙。
代码如下:
  System.D……

那就先关闭,例如:

//图片赋值 
string myfilename = T_path.Text.Trim(); //OpenFileDialog1.FileName;
                FileStream fs = new FileStream(myfilename, FileMode.Open, FileAccess.Read);
                byte[] mybytes = new byte[fs.Length];
                //fs.Read(mybytes, 0, Convert.ToInt32(fs.Length));
                fs.Read(mybytes, 0, mybytes.Length);
                member.Poto = Convert.ToBase64String(mybytes);
                fs.Close();

//显示图片
                pictureBox1.Refresh();
                if (ds.Tables[0].Rows[0]["Poto"].ToString().Trim().Length > 0)
                {
                    //图片赋值 
                    byte[] buffByte = Convert.FromBase64String(ds.Tables[0].Rows[0]["Poto"].ToString());
                    System.IO.MemoryStream ms = new System.IO.MemoryStream(buffByte);
                    pictureBox1.Image = Image.FromStream(ms);
                    ms.Position = 0;
                    ms.Close();
                    Poto = Convert.ToBase64String(buffByte).ToString();
                }
--------------------编程问答--------------------
引用 6 楼 ly_longyue 的回复:
我觉得 是 因为 word 没有关闭 ,图片还在用着 所以不能访问
要判断 word 是否 关闭后在访问 数据源

事实上,我可以在绑定数据源之前将word关闭,但是因为这个image控件并没有释放线程,所以他还是不允许我重新绑定或者加载。换句话说,我重新换个图片,还是认为我没释放。

我觉得是我对线程理解的有问题。感谢各位楼上的。 --------------------编程问答--------------------
引用 7 楼 kltwjt 的回复:
引用楼主 cityrode 的回复:
System.Drawing.Image image = mf.GetThumbnailImage(300, 300, null, System.IntPtr.Zero);
image.Save("C:/temp1.bmp");


//Summary
imageThumbnails.ToolTip = pageRange.Text;

//l……

其实图片不是被占用的,是image那个控件被占用了,因为我隐藏了主窗体。非常感谢。
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,