I am currently developing a program that needs to download some images from the socket server,and the downloading work will execute a long time. So, I create a new std::thread
to do that.
Once it's downloaded,the std::thread
will call a member function of current Class, but this Class is likely to have been released. So, I got a exception.
How to solve this problem?
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>
? – Travers