内存不足,无法继续执行程序 [英] Insufficient memory to continue the execution of the program

查看:199
本文介绍了内存不足,无法继续执行程序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

  for  int  i =  0 ; i <  ltTemplateIndex.Count; i ++)
{
if (i == 0
{
ppMergedPres = ppSet.Open(Path.GetTempPath()+ @ \ template + i + 。ppt,MsoTriState.msoTrue,MsoTriState.msoFalse,MsoTriState.msoFalse);
ppMergedSlides = ppMergedPres.Slides;
}
else
{
ppPres = ppSet.Open(Path.GetTempPath()+ @ \ template + i + 。ppt,MsoTriState.msoTrue,MsoTriState.msoFalse,MsoTriState.msoFalse);
if (ltTemplateIndex.Count > 1
{
try
{
ppMergedSlides.InsertFromFile(Path.GetTempPath()+ @ \ template + i + 。ppt,ppMergedSlides.Count, 1 ,ppPres.Slides.Count);
}
catch (Exception ex){}
if ( ppPres!= null
ppPres.Close();

}
}
}

string directoryPath = System.Web.Hosting。 HostingEnvironment.MapPath( 〜/ Results);

if (!Directory.Exists(directoryPath))
Directory.CreateDirectory(directoryPath);

ppMergedPres.SaveAs(
Path.Combine(directoryPath,pptFileName),
PowerPoint.PpSaveAsFileType.ppSaveAsPresentation,
MsoTriState.msoFalse);

ppMergedPres.Close();

解决方案

打开文件时可以尝试添加using语句。

这将自动关闭并处理对象(如果实现了IDisposable接口)

  for  int  i =  0 ; i <  ltTemplateIndex.Count; i ++)
{
string fileName = Path.Combine(Path.GetTempPath(),
String .Format( @ template { 0} .ppt;
使用 var ppTemp = ppSet.Open (fileName,MsoTriState.msoTrue,MsoTriState.msoFalse,MsoTriState.msoFalse))
{
if (i == 0
{
ppMergedPres = ppTemp;
ppMergedSlides = ppMergedPres.Slides;
}
else
{
ppPres = ppTemp;
if (ltTemplateIndex.Count > 1
{
try
{
ppMergedSlides.InsertFromFile(fileName,ppMergedSlides.Count, 1 ,ppPres.Slides.Count);
}
catch (Exception ex){}
finally
{
if (ppPres!= null
ppPres.Close ();
}
}
}
} // 资源将被释放这里
}

string directoryPath = System.Web.Hosting.HostingEnvironment.MapPath( 〜/ Results);

if (!Directory.Exists(directoryPath))
Directory.CreateDirectory(directoryPath);

ppMergedPres.SaveAs(
Path.Combine(directoryPath,pptFileName),
PowerPoint.PpSaveAsFileType.ppSaveAsPresentation,
MsoTriState.msoFalse);

ppMergedPres.Close();


请使用此代码并聚焦粗体区域。



 ppMergedPres.SaveAs((System.Web.Hosting.HostingEnvironment.MapPath( 〜/ Results / + pptFileName)), PowerPoint.PpSaveAsFileType.ppSaveAsOpenXMLPresentation,MsoTriState.msoFalse);  
ppMergedPres.Close();


for (int i = 0; i < ltTemplateIndex.Count; i++)
{
    if (i == 0)
    {
        ppMergedPres = ppSet.Open(Path.GetTempPath() + @"\template" + i + ".ppt", MsoTriState.msoTrue, MsoTriState.msoFalse, MsoTriState.msoFalse);
        ppMergedSlides = ppMergedPres.Slides;
    }
    else
    {
        ppPres = ppSet.Open(Path.GetTempPath() + @"\template" + i + ".ppt", MsoTriState.msoTrue, MsoTriState.msoFalse, MsoTriState.msoFalse);
        if (ltTemplateIndex.Count > 1)
        {
            try
            {
                ppMergedSlides.InsertFromFile(Path.GetTempPath() + @"\template" + i + ".ppt", ppMergedSlides.Count, 1, ppPres.Slides.Count);
            }
            catch (Exception ex) { }
            if (ppPres != null)
                ppPres.Close();

        }
    }
}

string directoryPath = System.Web.Hosting.HostingEnvironment.MapPath("~/Results");

if (!Directory.Exists(directoryPath ))
Directory.CreateDirectory(directoryPath);

ppMergedPres.SaveAs(
Path.Combine(directoryPath, pptFileName),
PowerPoint.PpSaveAsFileType.ppSaveAsPresentation, 
MsoTriState.msoFalse);

ppMergedPres.Close();

解决方案

You could try to add a using statement when opening the file.
This will automatically Close and Dispose the object (if there is an IDisposable interface implemented)

for (int i = 0; i < ltTemplateIndex.Count; i++)
{
    string fileName = Path.Combine(  Path.GetTempPath(),
                                     String.Format(@"template{0}.ppt";
    using (var ppTemp = ppSet.Open(fileName, MsoTriState.msoTrue, MsoTriState.msoFalse, MsoTriState.msoFalse))
    {
        if (i == 0)
        {
            ppMergedPres = ppTemp;
            ppMergedSlides = ppMergedPres.Slides;
        }
        else
        {
            ppPres = ppTemp;
            if (ltTemplateIndex.Count > 1)
            {
                try
                {
                    ppMergedSlides.InsertFromFile(fileName, ppMergedSlides.Count, 1, ppPres.Slides.Count);
                }
                catch (Exception ex) { }
                finally
                {
                    if (ppPres != null)
                        ppPres.Close();
                } 
            }
        }
    }  // Resources will be released here
}
 
string directoryPath = System.Web.Hosting.HostingEnvironment.MapPath("~/Results");
 
if (!Directory.Exists(directoryPath))
    Directory.CreateDirectory(directoryPath);
 
ppMergedPres.SaveAs(
                        Path.Combine(directoryPath, pptFileName),
                        PowerPoint.PpSaveAsFileType.ppSaveAsPresentation, 
                        MsoTriState.msoFalse);
 
ppMergedPres.Close();


Please use this Code and focus bold area .

ppMergedPres.SaveAs((System.Web.Hosting.HostingEnvironment.MapPath("~/Results/" + pptFileName)), PowerPoint.PpSaveAsFileType.ppSaveAsOpenXMLPresentation, MsoTriState.msoFalse);
            ppMergedPres.Close();


这篇关于内存不足,无法继续执行程序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆