Yes. Exactly as you would from the "normal" UI thread - all code runs on a thread, so it doesn't matter which thread you call a method from: if it returns a string, it returns a string to the caller on the same thread.
private void button1_Click(object sender, EventArgs e)
{
BackgroundWorker work = new BackgroundWorker();
work.DoWork += new DoWorkEventHandler(work_DoWork);
work.RunWorkerAsync();
}
void work_DoWork(object sender, DoWorkEventArgs e)
{
Console.WriteLine(GetMyString());
}
string GetMyString()
{
return DateTime.Now.ToString();
}