我正在努力解决一个我无法解决的问题。我正在构建一个生成频率可调波的应用程序。
由于需要经常听到这个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