Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/203.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# PDFTron内存泄漏缩放_C#_Android_Xamarin_Memory Leaks_Pdftron - Fatal编程技术网

C# PDFTron内存泄漏缩放

C# PDFTron内存泄漏缩放,c#,android,xamarin,memory-leaks,pdftron,C#,Android,Xamarin,Memory Leaks,Pdftron,我和PDFTron一起工作,它可以很好地和PDF一起工作。我用xamarin制作了一个应用程序,人们可以在其中打开很多pdf文件进行签名。这也很好用 但是,当放大和缩小时,问题就开始了。然后,记忆突然开始填满。放大几个文档后,应用程序崩溃 有人知道发生了什么吗 这是所有魔术发生的活动: 初始化PDFViewCtrl 当按下backbutton时 保存文档 设置Pdf视图 简历上 论毁灭 处置 关于低内存 你应该尝试创建一个最小的代码示例来解决这个问题,如果我知道坏事情发生在哪里的话。你已经调试过

我和PDFTron一起工作,它可以很好地和PDF一起工作。我用xamarin制作了一个应用程序,人们可以在其中打开很多pdf文件进行签名。这也很好用

但是,当放大和缩小时,问题就开始了。然后,记忆突然开始填满。放大几个文档后,应用程序崩溃

有人知道发生了什么吗

这是所有魔术发生的活动:

初始化PDFViewCtrl 当按下backbutton时 保存文档 设置Pdf视图 简历上 论毁灭 处置 关于低内存
你应该尝试创建一个最小的代码示例来解决这个问题,如果我知道坏事情发生在哪里的话。你已经调试过代码了吗?我已经把它转发给了Xamarin。这里的Android团队,但与此同时,你使用的是什么版本的PDFNet?您可以调用PDFNet.getVersion。您尝试的任何设备上是否也存在泄漏?还是仅限于某些问题?请联系支持团队,创建并向我们发送允许我们重现问题的最低代码示例。谢谢
    private PDFViewCtrl _mPdfViewCtrl;
    SetupViewer(filePath);
    public override void OnBackPressed()
    {
        base.OnBackPressed();
        _syncManager = null;
        DisposePdfCtrl();

        Finish();

    }
_mPdfViewCtrl.Doc.Save(filePath, 0);
private void SetupViewer(string filePath)
    {
        try
        {

        PDFNet.SetDefaultDiskCachingEnabled(true);
        PDFNet.SetViewerCache(100 * 1024 * 1024, false);
        }
        catch (pdftron.Common.PDFNetException ex)
        {
        Logger.log(Title, "Failed to setup viewer");


        }

        try
        {

        Logger.log(Title, $"Setting up pdf viewer");
        SetContentView(Resource.Layout.PdfView);

        var toolbar = FindViewById<Toolbar>(Resource.Id.toolbar);
        SetSupportActionBar(toolbar);

        SupportActionBar.Title = "Sign Document";

        Logger.log(Title, $"Toolbar is setup.");
        _mPdfViewCtrl = FindViewById<PDFViewCtrl>(Resource.Id.pdfviewctrl);

        _mPdfViewCtrl.PagePresentationMode = PDFViewCtrl.PagePresentationModes.e_single_page;
        _mPdfViewCtrl.PageViewMode = PDFViewCtrl.PageViewModes.e_fit_page;
        _mPdfViewCtrl.PageRefViewMode = PDFViewCtrl.PageViewModes.e_fit_page;
        _mPdfViewCtrl.SetHighlightFields(true);

        Logger.log(Title, $"Opening file in viewer: {filePath}");

        var docToOpen = new PDFDoc(filePath);
        docToOpen.InitStdSecurityHandler("");

        if (!_allowChange)
        {
            docToOpen.FlattenAnnotations();
        }

        Logger.log(Title, "setting file to pdf viewer");
        _mPdfViewCtrl.Doc = docToOpen;




        var toolManager = new ToolManager(_mPdfViewCtrl);
        Logger.log(Title, "setting file to pdf viewer");
        _mPdfViewCtrl.ToolManager = toolManager;



        }
        catch (Exception ex)
        {
        Logger.log(Title, $"Error while setting up pdf view: {ex.Message}");
        }
    }
    protected override void OnPause()
    {
        base.OnPause();
        DisposePdfCtrl();
    }
    protected override async void OnResume()
    {
        base.OnResume();
        try
        {
        if (!_busy)
        {

            _mPdfViewCtrl?.Resume();
        }
        }
        catch (ObjectDisposedException)
        {
        SetupViewer(filePath);
        }
    }
protected override void OnDestroy()
{
    base.OnDestroy();
    DisposePdfCtrl();

}
bool disposed = false;
private void DisposePdfCtrl()
{
    if (_disposing)
    return;

    _disposing = true;
    if (disposed) return;
        try
        {
            var oldTool = _mPdfViewCtrl.ToolManager;
            var oldDoc = _mPdfViewCtrl.Doc;

            _mPdfViewCtrl.Doc.Unlock();
            _mPdfViewCtrl?.PurgeMemory();

            _mPdfViewCtrl?.CloseDoc();
            _mPdfViewCtrl?.CloseTool();


            oldDoc?.Dispose();
            oldTool?.Dispose();

            _mPdfViewCtrl?.Dispose();
            _mPdfViewCtrl = null;
            _syncManager = null;
            GC.Collect();
            this.Dispose();

        } catch (Exception ex)
        {

        }
        disposed = true;
    _disposing = false;
}
public override void OnLowMemory()
{
    base.OnLowMemory();
    Logger.log(Title, "Low on memory");
    _mPdfViewCtrl?.PurgeMemory();
}