我正在尝试从套接字回调函数访问Collection类型(ModuleManager.cs)的包装器。每当客户端连接到这个套接字时,我希望它提供一些关于它自己的数据,并将它放入ModuleManager中。
private static void AddModule (StateObject state)
{
string[] ModuleInfo = state.sb.ToString().Split('|');
// Create the module object.
Module module = new Module();
module.Socket = state.workSocket;
module.Name = ModuleInfo[0];
module.Plugin = PluginManager.PluginManager.Current.GetPlugin(ModuleInfo[1].Substring(0, ModuleInfo[1].Length - 5));
File.AppendAllText(@"C:\log.txt", System.DateTime.Now.ToString() + " -> [ModuleFinder] Adding module : " + state.sb.ToString() + Environment.NewLine);
ModuleManager.Current.Add(module);
}
所以创建模块的数据基本上都处于状态stringbuilder中。创建模块,然后将其添加到ModuleManager:
public void Add(Module module)
{
File.AppendAllText(@"C:\log.txt", System.DateTime.Now.ToString() + " -> [ModuleManager] Adding Module: " + module.Name + " | " + module.Plugin.Name + Environment.NewLine);
if (ModuleManager.Current.GetModule(module.Name) == null && PluginManager.PluginManager.Current.GetPlugin(module.Plugin) != null)
{
Modules.Add(module);
File.AppendAllText(@"C:\log.txt", System.DateTime.Now.ToString() + " -> [ModuleManager] Added Module: " + module.Name + " | " + module.Plugin.Name + Environment.NewLine);
}
}
正如您可能已经注意到的那样,在此过程中会创建一个日志文件,因为最后一个日志永远不会被附加我得出的结论是该程序被卡住了
Modules.Add(module)
但我不明白为什么。当我检查WebApp以查看是否有任何已注册的模块时,没有结果。
关于git的完整项目:https://github.com/LarsGardien/EniacHome
非常感谢任何帮助,提前谢谢!
答案 0 :(得分:0)
好的,发现了问题。我没有在不同的线程上监听模块,因此出现了一些奇怪的行为。抱歉这个模糊的问题。我只是不能按照我想要的方式......