|
|
@ -2,6 +2,7 @@ |
|
|
|
using System.Collections.Generic; |
|
|
|
using System.IO; |
|
|
|
using System.IO.MemoryMappedFiles; |
|
|
|
using System.IO.Pipes; |
|
|
|
using System.Text; |
|
|
|
using System.Windows; |
|
|
|
|
|
|
@ -9,79 +10,41 @@ namespace Utils |
|
|
|
{ |
|
|
|
public class MemoryHelper |
|
|
|
{ |
|
|
|
public static object lockToken=new object(); |
|
|
|
|
|
|
|
public static string GetMemoryToken() |
|
|
|
{ |
|
|
|
lock (lockToken) |
|
|
|
try |
|
|
|
{ |
|
|
|
string memoryName = string.Empty; |
|
|
|
string[] args = Environment.GetCommandLineArgs(); |
|
|
|
foreach (var arg in args) |
|
|
|
string pipeId = Environment.GetCommandLineArgs()[1]; |
|
|
|
//创建输入类型匿名管道
|
|
|
|
using (PipeStream pipeClient = new AnonymousPipeClientStream(PipeDirection.In, pipeId)) |
|
|
|
{ |
|
|
|
if (arg.StartsWith("uid:")) |
|
|
|
using (StreamReader sr = new StreamReader(pipeClient)) |
|
|
|
{ |
|
|
|
memoryName = arg; |
|
|
|
} |
|
|
|
} |
|
|
|
string temp; |
|
|
|
|
|
|
|
var result = MemoryHelper.ReadMMF(memoryName); |
|
|
|
|
|
|
|
if (result.isOk) |
|
|
|
{ |
|
|
|
return result.content; |
|
|
|
} |
|
|
|
else |
|
|
|
do |
|
|
|
{ |
|
|
|
System.Environment.Exit(0); |
|
|
|
return string.Empty; |
|
|
|
} |
|
|
|
} |
|
|
|
temp = sr.ReadLine(); |
|
|
|
} |
|
|
|
while (!temp.StartsWith("SYNC")); |
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// 写入映射文件
|
|
|
|
/// </summary>
|
|
|
|
/// <param name="mapname"></param>
|
|
|
|
/// <param name="content"></param>
|
|
|
|
public static bool WriteMMF(string mapname, string content) |
|
|
|
{ |
|
|
|
MemoryMappedFile mmf = MemoryMappedFile.CreateOrOpen(mapname, 1000, MemoryMappedFileAccess.ReadWrite); |
|
|
|
if (!string.IsNullOrEmpty(content)) |
|
|
|
{ |
|
|
|
using (var mmfStream = mmf.CreateViewStream()) |
|
|
|
{ |
|
|
|
using (var sw = new System.IO.StreamWriter(mmfStream)) |
|
|
|
|
|
|
|
while ((temp = sr.ReadLine()) != null) |
|
|
|
{ |
|
|
|
sw.Write(content.Trim()); |
|
|
|
} |
|
|
|
return temp; |
|
|
|
} |
|
|
|
|
|
|
|
return true; |
|
|
|
} |
|
|
|
return false; |
|
|
|
} |
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// 读取映射文件
|
|
|
|
/// </summary>
|
|
|
|
/// <param name="mapname"></param>
|
|
|
|
public static (bool isOk, string content) ReadMMF(string mapname) |
|
|
|
{ |
|
|
|
try |
|
|
|
{ |
|
|
|
MemoryMappedFile mmf = MemoryMappedFile.OpenExisting(mapname); |
|
|
|
using (var mmfStream = mmf.CreateViewStream(0, 1000, MemoryMappedFileAccess.ReadWrite)) |
|
|
|
{ |
|
|
|
StreamReader reader = new StreamReader(mmfStream); |
|
|
|
string jwt = reader.ReadToEnd().Replace("\0","").TrimEnd(); |
|
|
|
return (true, jwt); |
|
|
|
} |
|
|
|
return string.Empty; |
|
|
|
} |
|
|
|
catch (Exception ex) |
|
|
|
{ |
|
|
|
return (false, null); |
|
|
|
return string.Empty; |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|