LightSwitch Скопировать строку в буфер обмена

Я добавил System.Windows и Microsoft.LightSwitch.Threading; чтобы получить доступ к буферу обмена.

Когда я запускаю эту программу, я получаю эту ошибку: Invalid cross-thread access.

Есть идеи, как заставить буфер обмена работать?

        partial void btnCopyFaucets_Execute()
    {
        // Write your code here.
        try
        {
            string CopyText, nManu, nProductCode, nFaucet;
            Faucets cpyfaucet = this.FaucetsSearch.SelectedItem;

            nManu = Convert.ToString(cpyfaucet.Manufacturer);
            nProductCode = Convert.ToString(cpyfaucet.ProductCode);
            nFaucet = Convert.ToString(cpyfaucet.Faucet);

            CopyText = nManu + " " + nProductCode + " " + nFaucet;

            // THIS IS WHERE THE COMPILER IS NOT HAPPY.
            Clipboard.SetText(CopyText);
        }
        catch (Exception damnit)
        {
            MessageBox.Show(damnit.Message);
        }
    }

person Kaleet    schedule 23.07.2012    source источник


Ответы (1)


Попробуйте использовать диспетчер Main следующим образом:

Microsoft.LightSwitch.Threading.Dispatchers.Main.BeginInvoke(() =>
 Clipboard.SetText(CopyText);
});

Возможно, если это веб-приложение, у вас будут проблемы с разрешениями после этого.

person Alberto    schedule 23.07.2012