我正在开发一个程序,需要从套接字服务器下载一些图片,这个下载工作需要很长时间才能完成。因此,我创建了一个新的std::thread
来完成任务。
当下载完成后,std::thread
将调用当前类的成员函数,但是该类可能已经被释放了。因此,我遇到了一个异常。
如何解决这个问题?
void xxx::fun1()
{
...
}
void xxx::downloadImg()
{
...a long time
if(downloadComplete)
{
this->fun1();
}
}
void xxx::mainProcees()
{
std::thread* th = new thread(mem_fn(&xxx::downloadImg),this);
th->detach();
//if I use th->join(),the UI will be obstructed
}
std::future<Image>
? - Superlokkus