精华内容
下载资源
问答
  • wpf image资源释放问题

    千次阅读 2019-11-08 19:06:34
    使用Image控件显示图片后,虽然自己释放了图片资源,Image.Source =null 了一下,但是图片实际没有释放。 解决方案1: public static BitmapImage GetImage(string imagePath) { BitmapImage bitmap = new ...

    使用Image控件显示图片后,虽然自己释放了图片资源,Image.Source =null 了一下,但是图片实际没有释放。
    解决方案1:
            public static BitmapImage GetImage(string imagePath)
            {
                BitmapImage bitmap = new BitmapImage();
                if (File.Exists(imagePath))
                {
                    bitmap.BeginInit();
                    bitmap.CacheOption = BitmapCacheOption.OnLoad;
                    using (Stream ms = new MemoryStream(File.ReadAllBytes(imagePath)))
                    {
                        bitmap.StreamSource = ms;
                        bitmap.EndInit();
                        bitmap.Freeze();
                    }
                }
                return bitmap;
            }
      //使用时直接通过调用此方法获得Image后立马释放掉资源
           image1.Source = GetImage(path);     // path为图片路径
       

    解决方案2:

    BitmapImage bitmapImage = new BitmapImage(); //初始化BitmapImage类的一个新实例

     Image image1 = new Image(); //定义一个Image控件

    string strPath = "D:\\mImage.png";//图片所在的位置

    bitmapImage.BeginInit(); //表示BitmapImage初始化开始

    bitmapImage.CacheOption = BitmapCacheOption.Onload;

    bitmapImage.UriSource = new Uri(strPath);//获取或设置BitmapImage的Uri源

    bitmapImage.EndInit();//表示BitmapImage初始化结束

    image1.Source = bitmapImage;//将image1控件的源指定为bitmapImage

    展开全文
  • WPF内存释放,C#

    万次阅读 热门讨论 2017-04-05 11:37:54
    WPF用起来虽然很爽,但是内存涨的很过分啊!曾让我一度想放弃这个平台。。。内存一直狂涨,100,200,300.。。。。GC也回收不定,直到有一天,找到了方法! Nuget搜索lierda.WPFHelper,再AppStratup时,new一下,...

    WPF用起来虽然很爽,但是内存涨的很过分啊!曾让我一度想放弃这个平台。。。内存一直狂涨,100,200,300.。。。。GC也回收不定,直到有一天,找到了方法!

    Nuget搜索lierda.WPFHelper,再AppStratup时,new一下,然后内存基本可以压缩到50MB以内,这个DLL每30s压缩一次内存,最低可以压缩到10MB

     

    示例代码:  
     /// <summary>
        /// App.xaml 的交互逻辑
        /// </summary>
        public partial class App : Application
        {
            LierdaCracker cracker = new LierdaCracker();
            protected override void OnStartup(StartupEventArgs e)
            {
                cracker.Cracker(100);//垃圾回收间隔时间
                base.OnStartup(e);
            }
        }

     

     

    展开全文
  • C# WPF 关闭程序 释放资源

    千次阅读 2013-08-24 18:29:18
    方法就可以关闭应用程序,释放资源WPF里Application类没有该方法,但是有一个Exit的事件驱动,在WPF应用程序里面关闭程序讲究很多: 在WPF应用程序的关闭是有ShutdownMode属性设置,具有3种枚举类型的值: 1...

    WindowsForm里一个Application.Exit();方法就可以关闭应用程序,释放掉资源。

    WPF里Application类没有该方法,但是有一个Exit的事件驱动,在WPF应用程序里面关闭程序讲究很多:

    在WPF应用程序的关闭是有ShutdownMode属性设置,具有3种枚举类型的值:

    1)

    OnLastWindowClose //应用程序最后一个窗体关闭时关闭应用程序

    2)
    OnMainWindowClose //应用程序主窗体关闭时关闭应用程序

    3)
    OnExplicitShutdown   //显示调用关闭

    OnExplicitShutdown模式下必须显示调用 Application实例的ShutDown方法

    例如:

    Application.Current.Shutdown(-1);
    
    Application.Current.ShutdownMode=ShutdownMode.OnLastWindowClose;

    这里Application.Current返回当前应用程序的当前Application实例

    注意以上不适应XBAP,XBAP在浏览器关闭时自动关闭。

    例如在 .cs里面
    protected override void OnClosed(EventArgs e)
            {
                //Application.Current.ShutdownMode = ShutdownMode.OnMainWindowClose;
                //if (this.IsAfreshLogin == true) return;
                Application.Current.Shutdown();
                base.OnClosed(e);
            }

    另外,还有一种强制终止应用程序进程的方法大笑我就喜欢这个。。

    Environment.Exit(0)

    可以立即中断程序执行并退出

    这个方法用起来的感觉类似在任务管理器里找到进程并终止,即立刻关闭进程,不管该进程目前有没有工作,在做什么工作。

    在WPF中调用该方法即立即退出,不会等待当前工作完成。

    需求:需要在许多子窗体中关闭整个程序(WPF)

    winform实现:

    Application.Exit();

    ====================================================================

    =============================原文地址================================

    ====================================================================


    展开全文
  • 搜了下内存、资源释放的资料,什么GC啊、Dispose啊、托管资源啊、非托管资源啊都是这些,但看不懂。 我想问下怎样可以简单优化自己的程序呢?? 例如定义了一个string s = "abc";是不是用完后,s = null;这样...
  • WPF BitmapImage 占用资源无法释放、无法删除问题 原文:WPF BitmapImage 占用资源无法释放、无法删除问题使用Image控件显示图片后,虽然自己释放了图片资源,Image.Source =null 了一下,但是图片实际...
    原文: WPF BitmapImage 占用资源无法释放、无法删除问题

    使用Image控件显示图片后,虽然自己释放了图片资源,Image.Source =null 了一下,但是图片实际没有释放。
    解决方案:修改加载方式~
            public static BitmapImage GetImage(string imagePath)
            {
                BitmapImage bitmap = new BitmapImage();
                if (File.Exists(imagePath))
                {
                    bitmap.BeginInit();
                    bitmap.CacheOption = BitmapCacheOption.OnLoad;
                    using (Stream ms = new MemoryStream(File.ReadAllBytes(imagePath)))
                    {
                        bitmap.StreamSource = ms;
                        bitmap.EndInit();
                        bitmap.Freeze();
                    }
                }
                return bitmap;
            }
      //使用时直接通过调用此方法获得Image后立马释放掉资源
           ImageBrush berriesBrush = new ImageBrush();   
           berriesBrush.ImageSource = GetImage(path); //path为图片的路径        
           this.Background = berriesBrush;

    posted on 2018-10-17 23:34 NET未来之路 阅读( ...) 评论( ...) 编辑 收藏

    转载于:https://www.cnblogs.com/lonelyxmas/p/9807899.html

    展开全文
  • 源:zhantianyou CODE private BitmapImage ReturnBitmap(string destFile) { // Read byte[] from png file BinaryReader binReader = new BinaryReader(File.Open...
  • 方法就可以关闭应用程序,释放资源WPF里Application类没有该方法,但是有一个Exit的事件驱动,在WPF应用程序里面关闭程序讲究很多: 在WPF应用程序的关闭是有ShutdownMode属性设置,具有3中枚举类型的值...
  • // Read byte[] from png file BinaryReader binReader = new BinaryReader(File.Open(filePath, FileMode.Open)); FileInfo fileInfo = new FileInfor(filePath); byte[] bytes = binReader.ReadBytes((int)file
  • cheers, 解决方案 I've looked at the WPF source code using .NET Refector and found this answer to a related question that might be a better solution for you. Set the BitmapImage.CacheOption to ...
  • wpf图片轮播(未释放资源

    千次阅读 2016-07-15 16:26:25
    namespace wpf图片轮播 { /// /// MainWindow.xaml 的交互逻辑 /// public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); timer = new DispatcherTimer(); timer....
  • 使用Image控件显示图片后,虽然自己释放了图片资源,Image.Source =null 了一下,但是图片实际没有释放。 解决方案:修改加载方式~ public static BitmapImage GetImage(string imagePath) { BitmapImage ...
  • 而我特意将图片保存下来复制个十几份到一个文件夹中,写了一个winform和WPF的demo,都是开了一个后台线程 然后从文件夹中随机读取图片并显示到控件上,两个示例demo的内存占用WPF的比WINFORM的高五六倍... 有没有其它...
  • 摘自: ... [System.Runtime.InteropServices.DllImport( ...用法:只需要在你希望释放的时候调用FlushMemory()即可..   转载于:https://www.cnblogs.com/jojinshallar/articles/3247460.html
  • 最近在MXS里用WPF写了UI,图片资源都是在Xaml里写绝对路径,这样子不方便而且容易报错 下面这个方法可以在MXS里正确加载图片资源 这是UI xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\" ...
  • WPF应用程序的内存有时会成为性能瓶颈 试了许多方式与API函数 最终用的这种方法
  • WPF中子窗体使用了本地资源,也就是说使用了给定路径下的文件,但是我要释放掉当前窗体中所使用的资源,代码如下: FileStream fs = File.OpenRead(currentResource); DisposableResource resourceObj = null; ...
  • wpf窗体中我封装了一个显示图片的控件,读取图片使用bitmap读取的,就给定图片的目录,这个控件就会读取这个目录下的所有图片...这种情况不是每次都有,偶尔会有,我怎么在关闭窗体时,同时释放控件使用的图片资源呢?

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,579
精华内容 1,031
关键字:

wpf资源释放