Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 同步两个定时器_C#_Multithreading_Timer_Sync_Windows Forms Designer - Fatal编程技术网

C# 同步两个定时器

C# 同步两个定时器,c#,multithreading,timer,sync,windows-forms-designer,C#,Multithreading,Timer,Sync,Windows Forms Designer,我有一个游戏,它使用一个共享磁盘在txt文件之间传递数据,问题是当我打开两个窗口时,它的相互耦合停止工作 下面是一些代码: private void timer1_Tick(object sender, EventArgs e) { try { if (count == 1) { circle1.setX(circle1.getX() + (int)deltaX

我有一个游戏,它使用一个共享磁盘在txt文件之间传递数据,问题是当我打开两个窗口时,它的相互耦合停止工作

下面是一些代码:

        private void timer1_Tick(object sender, EventArgs e)
    {
        try
        {
            if (count == 1)
            {
                circle1.setX(circle1.getX() + (int)deltaX[0]);
                circle1.setY(circle1.getY() + (int)deltaZ[0]);
                File.WriteAllText(@"L:\achtung\player1.txt", String.Empty);
                StreamWriter sw = new StreamWriter(@"L:\achtung\player1.txt");
                StreamReader sw1 = new StreamReader(@"L:\achtung\player2.txt");
                sw.WriteLine(circle1.getX());
                sw.WriteLine(circle1.getY());
                sw.Close();
                for (int i = 0; i < 2; i++)
                {
                    if (i == 0)
                        x = Convert.ToInt32(sw1.ReadLine());
                    else
                        y = Convert.ToInt32(sw1.ReadLine());
                }
                sw1.Close();
                circle2.setX(x);
                circle2.setY(y);
            }
            else if (count == 2)
            {
                circle2.setX(circle2.getX() + (int)deltaX[0]);
                circle2.setY(circle2.getY() + (int)deltaZ[0]);
                File.WriteAllText(@"L:\achtung\player2.txt", String.Empty);
                StreamWriter sw = new StreamWriter(@"L:\achtung\player2.txt");
                StreamReader sw1 = new StreamReader(@"L:\achtung\player1.txt");
                sw.WriteLine(circle2.getX());
                sw.WriteLine(circle2.getY());
                sw.Close();
                for (int i = 0; i < 2; i++)
                {
                    if (i == 0)
                        x = Convert.ToInt32(sw1.ReadLine());
                    else
                        y = Convert.ToInt32(sw1.ReadLine());
                }
                sw1.Close();
                circle1.setX(x);
                circle1.setY(y);
            }
        }
        catch (Exception ex)
        {
        }

        System.Drawing.Graphics graphics = this.CreateGraphics();
        graphics.FillEllipse(Brushes.Red, circle1.getX(), circle1.getY(), 10, 7);
        graphics.FillEllipse(Brushes.Gray, circle2.getX(), circle2.getY(), 10, 7);
    }
private void timer1\u勾选(对象发送方,事件参数e)
{
尝试
{
如果(计数=1)
{
circle1.setX(circle1.getX()+(int)deltaX[0]);
circle1.setY(circle1.getY()+(int)deltaZ[0]);
File.writealText(@“L:\achtung\player1.txt”,String.Empty);
StreamWriter sw=新的StreamWriter(@“L:\achtung\player1.txt”);
StreamReader sw1=新的StreamReader(@“L:\achtung\player2.txt”);
sw.WriteLine(circle1.getX());
sw.WriteLine(圈1.getY());
sw.Close();
对于(int i=0;i<2;i++)
{
如果(i==0)
x=Convert.ToInt32(sw1.ReadLine());
其他的
y=Convert.ToInt32(sw1.ReadLine());
}
sw1.Close();
圆圈2.setX(x);
圆圈2.塞蒂(y);
}
否则如果(计数=2)
{
circle2.setX(circle2.getX()+(int)deltaX[0]);
circle2.setY(circle2.getY()+(int)deltaZ[0]);
File.writealText(@“L:\achtung\player2.txt”,String.Empty);
StreamWriter sw=新的StreamWriter(@“L:\achtung\player2.txt”);
StreamReader sw1=新的StreamReader(@“L:\achtung\player1.txt”);
sw.WriteLine(circle2.getX());
sw.WriteLine(圈2.getY());
sw.Close();
对于(int i=0;i<2;i++)
{
如果(i==0)
x=Convert.ToInt32(sw1.ReadLine());
其他的
y=Convert.ToInt32(sw1.ReadLine());
}
sw1.Close();
圆圈1.setX(x);
圆圈1.塞蒂(y);
}
}
捕获(例外情况除外)
{
}
System.Drawing.Graphics Graphics=this.CreateGraphics();
graphics.FillEllipse(brush.Red,circle1.getX(),circle1.getY(),10,7);
graphics.FillEllipse(画笔.Gray,圆圈2.getX(),圆圈2.getY(),10,7);
}

如何在同一时间从两张打开的表单中读取和写入数据?

我有几台计算机上有相同的磁盘,称为“L”。这里的问题不是计时器相互干扰。这里的问题是,您正在使用文件在客户端之间进行通信。为你的游戏设置一个合适的服务器版本,这是唯一真正的解决方案。没有服务器我不能这样做吗?如果不是的话,如何设置一个合适的服务器?“如何设置一个合适的服务器”--在这里回答。请对可用的技术进行一些研究,例如套接字(适用于各种网络场景)或命名管道(适用于局域网内或进程间同一机器场景),并诚实地尝试使用可用资源来实现某些功能。如果你有这样做的具体问题,那么请随意问这个问题,并提供关于具体问题的确切细节。