Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/264.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
Javascript NodeJS和C#app EBUSY错误_Javascript_C#_Node.js_Npm - Fatal编程技术网

Javascript NodeJS和C#app EBUSY错误

Javascript NodeJS和C#app EBUSY错误,javascript,c#,node.js,npm,Javascript,C#,Node.js,Npm,我目前正在开发一个nodeJS应用程序。我使用一个简单的C#程序创建一个文本文件。该文件就像一个令牌,可以帮助我继续执行nodeJS应用程序。我有以下javascript代码: function take_tool() { while(take_tool_flag == false) { if(fs.existsSync('D:/flag.txt')) { fs.writeFileSync('D:/input_robot.txt', '-1');

我目前正在开发一个nodeJS应用程序。我使用一个简单的C#程序创建一个文本文件。该文件就像一个令牌,可以帮助我继续执行nodeJS应用程序。我有以下javascript代码:

function take_tool() {
    while(take_tool_flag == false) {
        if(fs.existsSync('D:/flag.txt')) {
            fs.writeFileSync('D:/input_robot.txt', '-1');
            console.log('Robot is taking the tool!');
            fs.unlinkSync('D:/flag.txt');
            take_tool_flag = true;
        }
    }
}

function draw_table() {
    while(draw_table_flag == false && take_tool_flag == true) {
        if(fs.existsSync('D:/flag.txt')) {
            fs.writeFileSync('D:/input_robot.txt', '-3');
            console.log('Robot is drawing the table game!');
            fs.unlinkSync('D:/flag.txt');
            draw_table_flag = true;
        }
    }
}


function game() {

    console.log("Game has started!");

    fs.writeFileSync('D:/input_robot.txt', '-99');

    take_tool();

    draw_table();
}

game();
这是C程序的代码:

使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用系统文本;
使用System.Threading.Tasks;
使用System.IO;
命名空间控制台应用程序1
{
班级计划
{
静态void Main(字符串[]参数)
{

对于(int i=0;i而不是
x==false
通常最好做
!x
,因为这样更简洁。另外,与其通过文件共享数据,这是超级混乱的,为什么不使用TCP连接呢?Websocket让这变得非常容易。感谢您的反馈!文件flag.txt是在资源可用时创建的,在我的情况下,是机器人可用的。然后trough my nodejs应用程序我使用input_robot.txt文件向robot发回命令。我没有其他替代方案。替代方案是套接字。共享文件是一个充满伤害的世界,特别是当你删除它们时,它们仍然保持打开状态。看看Websocket。C#也有很好的支持。替代方案是旋转并积极重试关于可能会占用大量CPU的错误。我找到了一个临时解决方案。System.IO.File.Create(@“D:\flag.txt”,1024)。Close();。但我将看一看Websocket。我确信还有更多优雅的解决方案。您在这里描述的似乎是进程间通信(IPC)的原始形式。有很多方法可以做到这一点,有些方法比其他方法更好。像这样的包装器使设置非常简单,本身不需要服务器。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            for (int i = 0; i <= 10; i++)
            {
                System.Threading.Thread.Sleep(10000);
                Console.WriteLine("File created!");
                File.Create(@"D:\flag.txt", 1024);
            }
        }
    }
}