Javascript NodeJS和C#app EBUSY错误
我目前正在开发一个nodeJS应用程序。我使用一个简单的C#程序创建一个文本文件。该文件就像一个令牌,可以帮助我继续执行nodeJS应用程序。我有以下javascript代码: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');
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);
}
}
}
}