C#RDP在for循环后未连接

C# RDP not connecting after forloop

我目前正在使用 Microsoft Terminal Services Client,它工作得非常好,并且可以完成我想要它做的事情。但是我 运行 遇到了一个小问题,事实证明这个问题很难解决。我正在尝试连接到 rdp,然后不断扫描文件是否存在。但是当我执行 for 循环时(在它调用 rdp 进行连接之后)它没有连接。这是我的代码:

                axMsTscAxNotSafeForScripting1.Server = "0.0.0.0";
                axMsTscAxNotSafeForScripting1.UserName = "Test";
                IMsTscNonScriptable secured = (IMsTscNonScriptable)axMsTscAxNotSafeForScripting1.GetOcx();
                secured.ClearTextPassword = "c";
                axMsTscAxNotSafeForScripting1.Connect();
                Thread.Sleep(2000);
                for(; ; )
                {
                    if (File.Exists(b + "t.txt"))
                    {
                        MessageBox.Show("File Exists");
                    }
                }

我认为 for 循环不会影响连接。但是,您正在创建一个在任何情况下都不会终止的无限循环。这意味着您正在阻塞执行线程。

您不应该使用循环来轮询文件是否存在,这就是 FileSystemWatcher 的用途。你需要做这样的事情。

var watcher= new FileSystemWatcher(b);
watcher.Filter = "t.txt";
watcher.Created += (sender, eventArgs) => MessageBox.Show("File Exists");

我对你的 b 变量中的内容做了一些假设,但重点是,观察者将观察目录的变化,为你要查找的文件类型设置过滤器 (它将接受通配符)。

如果你想防止程序退出,不要使用无限循环,只需使用Console.ReadKeyConsole.ReadLine这样你就不会忙着等待。

Console.WriteLine("Press any key to exit.");
Console.ReadKey();