修复进程间通讯异常问题

This commit is contained in:
huangxianguo 2024-09-04 10:11:04 +08:00
parent 8cfae665be
commit b9a7b1350b
6 changed files with 37 additions and 32 deletions

View File

@ -40,8 +40,4 @@
<None Remove=".gitignore" />
</ItemGroup>
<ItemGroup>
<Folder Include="Service\" />
</ItemGroup>
</Project>

View File

@ -2,5 +2,5 @@
public class Constants
{
public const string SN = "5506771257";
public const string SN = "G5506771257";
}

View File

@ -1,6 +1,9 @@
using MasstransferCommon.Model.Constant;
using MasstransferCommon.Events;
using MasstransferCommon.Model.Entity;
using MasstransferCommunicate.Mqtt.Client;
using MasstransferCommunicate.Process.Client;
using MasstransferInfrastructure.Database.Sqlite;
using MasstransferInfrastructure.Mqtt.Model;
namespace MasstransferExporter;
@ -10,31 +13,25 @@ class Program
public static async Task Main()
{
// var mqttParams = Db.Query<MqttParams>("select * from mqtt_params").FirstOrDefault();
//
// // 启动mqtt连接
// await MessageQueueHelper.InitConnect(new MqttConnectOptions()
// {
// ServerAddress = mqttParams.ServerAddress,
// Port = mqttParams.Port,
// UserName = mqttParams.UserName,
// Password = mqttParams.Password
// });
//
// // 启动与主程序的通信
// await ProcessCommunicator.Connect();
//
// // 启动完成后,广播启动通知
// EventBus<bool>.Publish(EventType.StartUp, true);rewrwe
var mqttParams = Db.Query<MqttParams>("select * from mqtt_params").FirstOrDefault();
// 启动mqtt连接
await MessageQueueHelper.InitConnect(new MqttConnectOptions()
{
ServerAddress = mqttParams.ServerAddress,
Port = mqttParams.Port,
UserName = mqttParams.UserName,
Password = mqttParams.Password
});
// 启动与主程序的通信
ProcessHelper.Init();
while (Console.ReadLine() is { } input)
{
ProcessHelper.Send(ProcessTopics.TestEvent, input);
}
// 启动完成后,广播启动通知
EventBus<bool>.Publish(EventType.StartUp, true);
// Console.WriteLine("按任意键退出");
// Console.ReadKey();
Console.WriteLine("按任意键退出");
Console.ReadKey();
}
}

View File

@ -10,7 +10,6 @@
<ItemGroup>
<Folder Include="Database\"/>
<Folder Include="Mqtt\Service\"/>
</ItemGroup>
<ItemGroup>

View File

@ -1,11 +1,14 @@
using System.IO.Pipes;
using MasstransferCommon.Utils;
namespace MasstransferCommunicate.Process.Client;
internal class PipeClient(string pipeName)
internal class PipeClient
{
private NamedPipeClientStream? _pipeClient;
private const string KeyPath = @"Software\Masstransfer\Security";
public event Action<string> MessageReceived;
/// <summary>
@ -25,7 +28,17 @@ internal class PipeClient(string pipeName)
{
try
{
_pipeClient = new NamedPipeClientStream(".", pipeName, PipeDirection.InOut, PipeOptions.Asynchronous);
Console.WriteLine("正在查找服务端管道id");
var pipeName = RegistryHelper.ReadValue(KeyPath, "PipeId");
if (pipeName == null)
{
Console.WriteLine("无法找到服务端管道id等待重试");
Thread.Sleep(1000);
continue;
}
_pipeClient = new NamedPipeClientStream(".", (string)pipeName, PipeDirection.InOut,
PipeOptions.Asynchronous);
Console.WriteLine("正在连接服务器");
_pipeClient.Connect(5000);

View File

@ -20,7 +20,7 @@ public class ProcessHelper
public static void Init()
{
if (_pipe != null) return;
_pipe = new PipeClient("MasstransferPipe");
_pipe = new PipeClient();
_pipe.Start();
}