- 项目需求:双击list control的项,反序列化该项对应的序列化文件,并将图元绘制到CStatic控件内
- 缺陷描述:每次双击以后都去进行反序列化操作,这样整个界面必须等反序列化结束才绘制,耗时较长,用户体验不好。另外,就算之前已经绘制过该项内容,下一次再次双击时又要重复做之前耗时同样久的工作,设计不够合理。
- 优化思路:在对话框OnInitDialog()函数中(已知List Control每项内容之后)开线程进行反序列化操作,有多少项就开多少个线程。另外,将以后绘制过的文件保存下来,无需重复反序列化。
- 开线程:
CStaticDrawSymbol m_StaticDrawSymbol;
vector< pair<CStaticDrawSymbol*,CString> > m_vecserialData;
void CThumbnailHandleDialog::LoadSerialFile(const CString PanelSuffix)
{
CString strSaveDirectory;
vector<CString> vstrLayers;
vector<CString> allLayers;
strSaveDirectory.Format("%s\\*", m_strSaveDirectory);
BOOL bWorking;
CFileFind findFile;
CString strFile, strFileName;
int nListFileNum = 0;
bWorking = findFile.FindFile(strSaveDirectory);
while(bWorking)