使用剪贴板中的更新数据

时间:2014-09-25 09:38:42

标签: c# winforms clipboard paste

我尝试在剪贴板中设置数据。我使用Clipboard.SetFileDropList

我看到在剪贴板中设置数据的指令之后,剪贴板中的数据在此代码运行的线程之后可用。为什么呢?

我通过创建一个新线程来解决这个问题。我等待已经死了。 有没有办法避免创建新线程?

........ 此函数处理程序位于sta线程

      private static void handler()
    {
        IPAddress ipAd = Dns.Resolve(Dns.GetHostName()).AddressList[1];
        TcpListener server = new TcpListener(ipAd, 8003);
        /* Start Listeneting at the specified port */
        server.Start();
        MessageBox.Show("The server isS running at port 8003...");
        for (; ; )
        {
            s = server.AcceptSocket();

            clipboardhandler(s);  }}


      private static void clipboardhandler()
    { 


   ..............
   ..............
StringCollection scex = new StringCollection();
string[] Listfile = Directory.GetFiles("Extract", "*.*");
string[] Listdir = Directory.GetDirectories("Extract", "*.*");

foreach (string fa in Listfile)
{
    scex.Add(System.IO.Path.GetFullPath(fa));
}

foreach (string fb in Listdir)
{
    scex.Add(System.IO.Path.GetFullPath(fb));
}

Clipboard.SetFileDropList(scex);
MessageBox.Show("clipboard update!");

if (Clipboard.ContainsFileDropList()) 
{
    MessageBox.Show("clip piena");

    StringCollection at = new StringCollection();
    at=Clipboard.GetFileDropList();

    foreach (String ste in at) 
    {
         MessageBox.Show(ste);
    }
}

当clipboardhandler()返回时,如果我进入目录并按下粘贴,则无效。 但是如果在返回函数后,我关闭程序(线程死),它的工作原理

所以我决定创建一个执行clipboardhandler的新线程... 为什么会这样? 谢谢!

0 个答案:

没有答案