Task比Thread耗资源更少,且默认在线程池中。
但是Thread能够设置为STA来执行而Task不能,这对于某些特殊功能很重要,比如WebBrowser控件对象就不能在非单线程单元的线程中new。
将Thread对象对应的线程设置为单线程单元线程的代码为:
Thread thd = new Thread(SnapshotMethod); thd.IsBackground = true; // 设置为后台线程 thd.SetApartmentState(ApartmentState.STA); // 设置该线程的执行方式是STA thd.Start(new Snapshot { url = "http://esrs.ce.com/report/index.aspx?id=" + i, path = @"W:/TmpFolder/" + i + "_CorporationId.png" });