与线程挣扎?

时间:2015-07-04 10:04:42

标签: c# multithreading

我是C#的新手,我正在与线程(也许)挣扎。

当我开始调试并逐个执行时,...并且加载表单已完成,程序被放置在这样的奇怪位置:

    static void Main(string[] args)
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        if (args.Length > 0)
            Application.Run(new frmMain(args[1]));
        else
            Application.Run(new frmMain());
    } // Stops here

我怀疑这是正常的,所以我创建了新项目并执行了。和之前的结果不同:

        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1()); // Stops here
        }

现在我很困惑,所以我需要帮助。有人告诉我它是线程,但我没有在我的代码中使用任何线程。

  • P.S。我使用NAudio Library播放音乐,所以我在frmMain类中声明了这样:

      using System;
      using System.Drawing;
      using System.IO;
      using System.Windows.Forms;
    
      using NAudio;
      using NAudio.Wave;
      using TagLib;
      (...)
      AudioFileReader _audioFileReader;
      IWavePlayer _waveOutDevice = new WaveOut();
      (...)
    
  • P.S。 2 ..这是frmMain的构造函数。

        InitializeComponent();
    
        this.listMusic.DragOver += new DragEventHandler(this.FileDragOver);
        this.listMusic.DragDrop += new DragEventHandler(this.FileDragDrop);
        this.listMusic.DoubleClick += new EventHandler(this.listDoubleClick);
    
        _waveOutDevice.PlaybackStopped += new EventHandler<StoppedEventArgs>(this.PlaybackStopped);
    

1 个答案:

答案 0 :(得分:-2)

可能是代码的另一部分正在使用多个线程。我有过多线程的情况,当我单步执行代码时,当前位置会反弹。只要你理解它在做什么,这不是一个真正的问题,但如果你在调试器中停止执行,它就会停在你不期望的地方。

如果要在代码中停止执行,请在代码行上放置断点(F9),然后,当您启动输入代码的操作时,请根据需要逐步执行。

如果您对正在运行的其他线程感到好奇,那么就有Threads窗口;在调试时,转到Debug窗口,选择Windows,然后选择Threads。如果您没有创建自己的线程,它可能有用,也可能没有用,但有时候在调试器中暂停执行时看到可能加载的内容会很方便。