在RunWorkerCompleted中使用字符串

时间:2014-01-29 01:23:55

标签: c# image backgroundworker

好吧,所以我试过并试图寻找解决方案,但我没有运气。我真的很感激这里的一些帮助。我在RunWorkerCompleted中有我想要访问的以下字符串,但我不确定它是如何或为何无法访问它。

 System.Text.RegularExpressions.Regex reg = new System.Text.RegularExpressions.Regex("link\":\"(.*?)\"");
            Match match = reg.Match(result);
            string url = match.ToString().Replace("link\":\"", "").Replace("\"", "").Replace("\\/", "/");
            return url;

因此该字符串位于我已经将其视为UploadImage

的公共对象中

我正在尝试在我的RunWorker中完成访问,因此我的文本框会返回图片网址。

这是我的背景工作者 -

     private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
        {
           string url = UploadImage(FilePath) as string;
        }

        private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            txtUploaded.Text = (url);
//unknown error in string url as it isn't accessible...
            if (txtUploaded.Text != null)
            {

                Clipboard.Clear();
                Clipboard.SetDataObject(txtUploaded.Text, true, 5, 100);

            }
            else
            {
                return;
            }

任何有关能够使用该字符串将我的文本框设置为返回的图像URL的帮助都会很棒。感谢。

1 个答案:

答案 0 :(得分:2)

您的变量url已定义,只能在后台线程中访问。

BackgroundWorker机制提供了一种将数据从后台线程传递回UI线程的安全方法。


将值分配给DoWork事件中的结果:

e.Result = UploadImage(FilePath) as string;

然后在RunWorkerCompleted事件中阅读:

string url = (string)e.Result;