当我使用复制的exe时,程序在处理过程中停止运行

时间:2014-09-25 12:27:32

标签: c# winforms exe

当我在C#Application的输出目录中打开exe时,我的程序运行正常但是当我将exe和exe.config文件复制到Desktop并运行它时,程序在中间停止。

1-我正在使用背景工作者。

2-我正在从表单构造函数中的 InitializeComponent();

之后的appconfig中读取一个字符串

不允许使用3-Cross Thread Processing。我已经检查过没有这样的例外。

4-我在参考文献中添加了许多dll。

它停止执行的位置显示在注释中的代码中。

  private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
    {
        DrawImages(0, 222, 145);
        // Line below executes and label is changed
       //SetLabelText("Creating Movie Here"); 
        CreateMovieFromImages();
      .
      .
      .
    }

CreateMovieFromImages()的代码是

    private void CreateMovieFromImages()
    {


     //Line below this point never execute and no message box displays nor any label is changed.
        MessageBox.Show("OK");

        try
        {
            SetLabelText("Creating Movie");
            for (int i = 0; i < 50; i++)
            {
                ImagesUrls.Add(outputDirectory+ "//Tempe" + i + ".bmp");
            }
        }
        catch (Exception e)
        {

            throw new Exception(e.Message);
        }
        int width = 1254;
        int height = 1000;
        var framRate = 5;
        try
        {
            using (var vFWriter = new VideoFileWriter())
            {
                vFWriter.Open(outputDirectory + "//TemperaryVideo.wmv", width, height, framRate, VideoCodec.WMV2);
                foreach (var i in ImagesUrls)
                {
                    Bitmap bmp = new Bitmap(i);
                    SetLabelText("Writing Image" + i + "\n");
                    var bmpReduced = ReduceBitmap(bmp, width, height);
                    vFWriter.WriteVideoFrame(bmpReduced);
                }
                vFWriter.Close();
            }
        }
        catch (Exception e)
        {
            MessageBox.Show(e.Message);
        }
    }

我之前从未尝试过像这样运行exe,这是我的第一次。也许我还需要另外一个像这样运行exe的东西。 当它在VS Solution的输出目录中时,exe正常工作。

非常感谢您阅读我的所有问题。请帮助我:)

1 个答案:

答案 0 :(得分:1)

复制整个输出目录,而不仅仅是可执行文件。它取决于您添加的其他.dll文件作为参考。