Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#RDP在forloop后未连接_C#_Remote Desktop_Rdp - Fatal编程技术网

C#RDP在forloop后未连接

C#RDP在forloop后未连接,c#,remote-desktop,rdp,C#,Remote Desktop,Rdp,我目前使用的是微软终端服务客户端,它的工作原理令人惊讶,并且做了我希望它做的事情。但我遇到了一个小问题,证明很难解决。我试图连接到rdp,然后不断扫描是否存在文件。但是当我执行for循环时(在它调用rdp进行连接之后),它没有连接。这是我的密码: axMsTscAxNotSafeForScripting1.Server = "0.0.0.0"; axMsTscAxNotSafeForScripting1.UserName = "Te

我目前使用的是微软终端服务客户端,它的工作原理令人惊讶,并且做了我希望它做的事情。但我遇到了一个小问题,证明很难解决。我试图连接到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.ReadKey
Console.ReadLine
即可,这样您就不用忙着等待了

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

当我删除forloop时,它工作得非常好,这是我不理解的。。。forloop是在我连接了我解释过的奇怪的东西之后,你用无限循环阻塞线程。但是线程在无限循环之前,所以它不应该先执行它吗?还有一种方法可以防止线程阻塞吗?您没有打开线程。你是在同一个线程。因此,代码开始执行rdp,然后进入无限循环。我尝试添加一个thread.sleep(2000)来解决这个问题。你有什么建议吗?你的先生救了我!非常感谢你。我不知道这是一种方法。。谢谢第3行的意思是“不起作用”,一个名为“e”的局部参数不能声明为“Hmmm,我想你可能已经有一个名为
e
,我在示例代码中对它进行了重命名,但任何其他名称都可以,只要它不与现有变量冲突。现在我得到的发送者不能声明。我很抱歉打扰你这么多,但真的很感谢你的帮助。你也需要重命名这个变量,它们没有被使用,所以任何唯一的名称都可以。