使用libcurl C/C+下载时冻结+;

使用libcurl C/C+下载时冻结+;,c,windows,sdl,libcurl,freeze,C,Windows,Sdl,Libcurl,Freeze,我正在开发一个软件,它可以下载文件并通过SDL窗口显示传输速度。 我的问题是,当我启动下载时,windows会立即将该窗口识别为崩溃的程序。下载完成后,一切正常。 我的程序没有崩溃,我想这是因为它在下载时无法响应。 有没有办法解决这个问题 PS:执行时“崩溃”的代码示例: curl_easy_setopt(curl, CURLOPT_URL, valeurs->URL); curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data);

我正在开发一个软件,它可以下载文件并通过SDL窗口显示传输速度。 我的问题是,当我启动下载时,windows会立即将该窗口识别为崩溃的程序。下载完成后,一切正常。 我的程序没有崩溃,我想这是因为它在下载时无法响应。 有没有办法解决这个问题

PS:执行时“崩溃”的代码示例:

curl_easy_setopt(curl, CURLOPT_URL, valeurs->URL);
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data);
curl_easy_setopt(curl, CURLOPT_NOPROGRESS, FALSE);
curl_easy_setopt(curl, CURLOPT_PROGRESSFUNCTION, downloadData);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, file);
res = curl_easy_perform(curl);
curl_easy_cleanup(curl);

要防止这些冻结,您需要在主线程中放置一个事件管理器(SDL_PoolEvent+SDL_Delay以避免过度使用CPU)

要防止这些冻结,您需要在主线程中放置一个事件管理器(SDL_PoolEvent+SDL_Delay以避免过度使用CPU)

也许你可以在一个单独的线程中执行下载,并偶尔轮询下载进度?你说的“被windows识别为崩溃程序”是什么意思?@KristerAndersson我想他指的是标准的“应用程序不响应”类型的行为,窗口会改变颜色。@Bart:我实际上使用一个线程,程序的另一部分运行代码,但仍被标识为崩溃。所谓崩溃,我指的是窗口改变颜色,如果用户点击内部,一个窗口弹出关闭程序m=BTW,curl\u easy\u setopt(curl,curloopt\u PROGRESSFUNCTION,downloadData);每秒在downloadData()中运行几次代码,我就会收到此函数生成的数据:|也许你可以在单独的线程中执行下载,偶尔轮询下载进度?你说的“被windows识别为崩溃程序”是什么意思?@KristerAndersson我想他指的是标准的“应用程序不响应”-在窗口改变颜色的情况下键入行为。@Bart:我实际上使用了一个线程,程序的另一部分运行代码,但仍然标识为崩溃。所谓崩溃,我指的是窗口改变颜色,如果用户点击内部,一个窗口弹出关闭程序m=BTW,curl\u easy\u setopt(curl,curloopt\u PROGRESSFUNCTION,downloadData);每秒在downloadData()中运行几次代码,我就会收到此函数生成的数据:|