SecurityException occurred
本文关键字:occurred SecurityException | 更新日期: 2023-09-27 17:50:14
我读过,这可能是有可能的UnityEngine
与Winforms
融合,所以这就是我想做的。我试图使用正弦波来控制Winform
按钮上颜色之间的闪烁。然而,我得到了一个我不知道如何解决的SecurityException
。
private void DisplayMessage(string messge)
{
int numVal;
//SPELL.Text += messge + Environment.NewLine;
numVal = Convert.ToInt32(messge);
udpSock1.Close();
if (numVal == 83)
{
//Application.EnableVisualStyles();
//Application.SetCompatibleTextRenderingDefault(false);
//Application.Idle += new EventHandler(Application_Idle);
//Application.Run(form1);
BCI1 form1 = new BCI1();
//Application.Run(form1);
form1.ShowDialog();
//stopwatch.Start();
SPELL.Text = SPELL.Text + form1.LET;
udpSock1 = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
udpSock1.Bind(new IPEndPoint(IPAddress.Any, 8050));
buffer = new byte[1024];
newClientEP = new IPEndPoint(IPAddress.Any, 0);
udpSock1.BeginReceiveFrom(buffer, 0, buffer.Length, SocketFlags.None, ref newClientEP, DoReceiveFrom, udpSock1);
//udpSock.Disconnect(true);
//udpSock.Connect(new IPEndPoint(IPAddress.Any, 8050));
}
这里我打开新表单,然后表单显示一些可以选择的字符,然后表单再次关闭,您返回到主表单1
完整程序:
using System;
using System.Drawing;
using System.Runtime.InteropServices;
using System.Security;
using System.Windows.Forms;
namespace Flicker
{
static class Program
{
[StructLayout(LayoutKind.Sequential)]
private struct Message
{
public IntPtr hWnd;
public int msg;
public IntPtr wParam;
public IntPtr lParam;
public uint time;
public Point p;
}
[return: MarshalAs(UnmanagedType.Bool)]
[SuppressUnmanagedCodeSecurity, DllImport("user32.dll", CharSet = CharSet.Auto)]
private static extern bool PeekMessage(out Message msg, IntPtr hWnd, uint messageFilterMin, uint messageFilterMax, uint flags);
static Form1 form;
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
form = new Form1();
Application.Idle += new EventHandler(Application_Idle);
Application.Run(form);
}
static void Application_Idle(object sender, EventArgs e)
{
Message message;
while (!PeekMessage(out message, IntPtr.Zero, 0, 0, 0))
{
form.UpdateFrame();
}
}
}
}
和形式:
using System;
using System.Diagnostics;
using System.Windows.Forms;
namespace Flicker
{
public partial class Form1 : Form
{
Stopwatch stopwatch = new Stopwatch();
public Form1()
{
InitializeComponent();
stopwatch.Start();
}
public void UpdateFrame()
{
double cycleHz = 0.001;
double wave = Math.Sin((stopwatch.ElapsedMilliseconds * 2.0 * Math.PI) * cycleHz);
if (wave > 0.0)
{
pictureBox1.BackColor = System.Drawing.Color.Black;
}
else
{
pictureBox1.BackColor = System.Drawing.Color.White;
}
}
}
}
只需将pictureBox1添加到设计器的表单中。
我建议在Microsoft XNA中编写整个应用程序-它比Unity3D更容易学习:)