正在与线程作斗争

本文关键字:斗争 线程 | 更新日期: 2023-09-27 18:00:58

我是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
        }

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

  • 附言:我用NAudio图书馆播放音乐,所以我在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();
      (...)
    
  • 第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);
    

正在与线程作斗争

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

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

如果你想知道还有哪些线程在运行,这里有"线程"窗口;调试时,转到"调试"窗口,选择"窗口",然后选择"线程"。如果您不是在创建自己的线程,它可能有用,也可能不有用,但有时在调试器中暂停执行时可以方便地查看可能加载的内容。