C#RDP在forloop后未连接

时间:2019-01-31 15:14:57

标签: c# remote-desktop rdp

我当前正在使用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");
                    }
                }

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

您不应该使用循环来轮询文件的存在,这就是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();