GUI is updated from another thread. Use begininvoke