使用“System.NullReferenceException”错误

时间:2018-02-16 16:33:54

标签: c# winforms visual-studio

我正在努力解决一个我无法解决的问题。我正在构建一个生成频率可调波的应用程序。

由于需要经常听到这个wave,我使用Application.Idle方法和一些代码。 当我在调试模式下运行应用程序时,它运行正常。在发布模式下,它会因“System.NullReferenceException”错误而崩溃。我搜索了一下,发现这可以通过取消选中Project Properties => Build => Optimize code来解决。

到目前为止,这么好

然而,当我运行可执行文件时,它再次崩溃并出现“System.NullReferenceException”错误。

我认为我的问题与其重复的问题不同。如上所述,我可以在调试和发布模式下运行Visual Studio中的程序,没有任何问题,但是它已经构建了.exe崩溃。所以调试不会让它更清晰

下面的代码是一个简单的代码,用于演示Application Idle

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Media;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
using Microsoft.Xna.Framework;
using System.Runtime.InteropServices;

namespace PeekMessageTest
{
    public partial class Form1 : Form
    {

        [System.Security.SuppressUnmanagedCodeSecurity]
        [DllImport("User32.dll", CharSet = CharSet.Auto, SetLastError = true)]
        public static extern bool PeekMessage(
        ref Message msg,
        IntPtr hWnd,
        uint messageFilterMin,
        uint messageFilterMax,
        uint flats);

        const float SampleRate = 44100;

        public Form1()
        {
            InitializeComponent();
            textBox1.Text = "0";
            Application.Idle += new EventHandler(Application_Idle);
        }

        void Application_Idle(object sender, EventArgs e)
        {
            Message msg = new Message();
            while (!PeekMessage(ref msg, IntPtr.Zero, 0, 0, 0))
            {
                Thread.Sleep(10);
                textBox1.Text = (Convert.ToDouble(textBox1.Text) + 1).ToString();
            }
        }
    }
}

我只创建了一个带有更新计数器的表单。 如上所述,.exe在“Application_Idle”中崩溃。

有人可以帮我这个吗?

很多thx

0 个答案:

没有答案