The majority of work seems to be done in UI thread, which is a problem. Move operations with UI controls out of parse method. Call method synchronously in
ThreadProc
and invoke only text assignment (text should be fully ready). Avoid updating UI elements too frequenty (text or progress), introduce counter in tight loops and only update once when counter reaches at least 1000 or so.