运行此功能以在后台工作
Run this function to work in background
private void CommandtWatcher()
{
// Both PR and D2H are classes from external dll files
// PR is ProcessMemoryReader class, it reads a message from X window
if(PR[0].getLastChatMsg().Equals("#eg")) // If I typed "#eg" then
{
D2HList[0].QuitGame("WindowToBeClosed"); // Close game window
}
}
这些功能很好用,但我不能强迫它在后台工作而不打扰UI生活
而且这不是游戏核心源代码的片段,它完全是外部程序读取进程内存,所以我没有任何超能力
在 .NET 4.5 中,您可以使用 Task.Run
来执行此操作。我还将方法更改为 return 结果 Task
。这样,代码的客户可以选择是 await
结果还是忽略它(如果希望一劳永逸)。
private Task CommandtWatcher()
{
return Task.Run(() =>
{
// Both PR and D2H are classes from external dll files
// PR is ProcessMemoryReader class, it reads a message from X window
if(PR[0].getLastChatMsg().Equals("#eg")) // If I typed "#eg" then
{
D2HList[0].QuitGame("WindowToBeClosed"); // Close game window
}
}
}
这个怎么样:
private void CommandtWatcher()
{
while (true)
{
// Both PR and D2H are classes from external dll files
// PR is ProcessMemoryReader class, it reads a message from X window
if(PR[0].getLastChatMsg().Equals("#eg")) // If I typed "#eg" then
{
D2HList[0].QuitGame("WindowToBeClosed"); // Close game window
return;
}
Thread.Sleep(100); // Prevent hogging cpu
}
}
并在后台 运行:
Task.Run((Action)CommandWatcher);
这会运行一个新线程中的方法,与UI分开,等待LastChatMsg
成为#eg
然后执行逻辑并停止。
private void CommandtWatcher()
{
// Both PR and D2H are classes from external dll files
// PR is ProcessMemoryReader class, it reads a message from X window
if(PR[0].getLastChatMsg().Equals("#eg")) // If I typed "#eg" then
{
D2HList[0].QuitGame("WindowToBeClosed"); // Close game window
}
}
这些功能很好用,但我不能强迫它在后台工作而不打扰UI生活
而且这不是游戏核心源代码的片段,它完全是外部程序读取进程内存,所以我没有任何超能力
在 .NET 4.5 中,您可以使用 Task.Run
来执行此操作。我还将方法更改为 return 结果 Task
。这样,代码的客户可以选择是 await
结果还是忽略它(如果希望一劳永逸)。
private Task CommandtWatcher()
{
return Task.Run(() =>
{
// Both PR and D2H are classes from external dll files
// PR is ProcessMemoryReader class, it reads a message from X window
if(PR[0].getLastChatMsg().Equals("#eg")) // If I typed "#eg" then
{
D2HList[0].QuitGame("WindowToBeClosed"); // Close game window
}
}
}
这个怎么样:
private void CommandtWatcher()
{
while (true)
{
// Both PR and D2H are classes from external dll files
// PR is ProcessMemoryReader class, it reads a message from X window
if(PR[0].getLastChatMsg().Equals("#eg")) // If I typed "#eg" then
{
D2HList[0].QuitGame("WindowToBeClosed"); // Close game window
return;
}
Thread.Sleep(100); // Prevent hogging cpu
}
}
并在后台 运行:
Task.Run((Action)CommandWatcher);
这会运行一个新线程中的方法,与UI分开,等待LastChatMsg
成为#eg
然后执行逻辑并停止。