@@ -53,6 +53,13 @@ public sealed class WkHtmlToPdfConverter : IHtmlToPdfConverter
53
53
private StringBuilder _errorString = null ;
54
54
private int _currentPhase = 0 ;
55
55
private bool _disposed = false ;
56
+
57
+ // keeping class level references to callback functions will prevent garbage collecting them
58
+ private NativeCalls . wkhtmltopdf_str_callback _errorCallback = null ;
59
+ private NativeCalls . wkhtmltopdf_str_callback _warnCallback = null ;
60
+ private NativeCalls . wkhtmltopdf_void_callback _phaseCallback = null ;
61
+ private NativeCalls . wkhtmltopdf_int_callback _progressCallback = null ;
62
+ private NativeCalls . wkhtmltopdf_bool_callback _finishCallback = null ;
56
63
#endregion
57
64
58
65
#region Properties
@@ -277,11 +284,11 @@ private IntPtr _BuildConverter(IntPtr globalSettings, IntPtr objectSettings, str
277
284
private byte [ ] _Convert ( string inputHtml )
278
285
{
279
286
var converter = IntPtr . Zero ;
280
- var errorCb = new NativeCalls . wkhtmltopdf_str_callback ( OnError ) ;
281
- var warnCb = new NativeCalls . wkhtmltopdf_str_callback ( OnWarning ) ;
282
- var phaseCb = new NativeCalls . wkhtmltopdf_void_callback ( OnPhaseChanged ) ;
283
- var progressCb = new NativeCalls . wkhtmltopdf_int_callback ( OnProgressChanged ) ;
284
- var finishCb = new NativeCalls . wkhtmltopdf_bool_callback ( OnFinished ) ;
287
+ _errorCallback = OnError ;
288
+ _warnCallback = OnWarning ;
289
+ _phaseCallback = OnPhaseChanged ;
290
+ _progressCallback = OnProgressChanged ;
291
+ _finishCallback = OnFinished ;
285
292
286
293
try
287
294
{
@@ -292,11 +299,11 @@ private byte[] _Convert(string inputHtml)
292
299
293
300
_errorString = new StringBuilder ( ) ;
294
301
295
- NativeCalls . wkhtmltopdf_set_error_callback ( converter , errorCb ) ;
296
- NativeCalls . wkhtmltopdf_set_warning_callback ( converter , warnCb ) ;
297
- NativeCalls . wkhtmltopdf_set_phase_changed_callback ( converter , phaseCb ) ;
298
- NativeCalls . wkhtmltopdf_set_progress_changed_callback ( converter , progressCb ) ;
299
- NativeCalls . wkhtmltopdf_set_finished_callback ( converter , finishCb ) ;
302
+ NativeCalls . wkhtmltopdf_set_error_callback ( converter , _errorCallback ) ;
303
+ NativeCalls . wkhtmltopdf_set_warning_callback ( converter , _warnCallback ) ;
304
+ NativeCalls . wkhtmltopdf_set_phase_changed_callback ( converter , _phaseCallback ) ;
305
+ NativeCalls . wkhtmltopdf_set_progress_changed_callback ( converter , _progressCallback ) ;
306
+ NativeCalls . wkhtmltopdf_set_finished_callback ( converter , _finishCallback ) ;
300
307
301
308
OnBegin ( NativeCalls . wkhtmltopdf_phase_count ( converter ) ) ;
302
309
0 commit comments