SecurityException occurred

本文关键字:occurred SecurityException | 更新日期: 2023-09-27 17:50:14

我读过,这可能是有可能的UnityEngineWinforms融合,所以这就是我想做的。我试图使用正弦波来控制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

SecurityException occurred

完整程序:

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更容易学习:)