The background method is probably the most prefered method, but I've found this one is very easy to implement, and its just one short line:
BeginInvoke(new Action(() => progressBar1.Increment(1)));
Place this in your worker thread to report to the UI. Not sure how "good" this is but it works well in a small image conversion program i wrote.