【问题标题】:Cannot access a disposed object. Object name: 'Xamarin.Controls.SignaturePadCanvasView'无法访问已处置的对象。对象名称:'Xamarin.Controls.SignaturePadCanvasView'
【发布时间】:2019-11-27 12:14:07
【问题描述】:

使用的插件:Xamarin.Controls.SignaturePade.Forms (3.0.0)

在 iOS 中运行良好,但在 Android 中会抛出 ObjectDisposedException

try
{
    Stream img = await padView.GetImageStreamAsync(SignaturePad.Forms.SignatureImageFormat.Png);//.GetImage(ImageFormatType.Png);
    ImageSource imgSource = ImageSource.FromStream(() => img);

    var memoryStream = new MemoryStream();
    long pos = Device.RuntimePlatform == Device.Android ? 0 : img.Position;

    img.CopyTo(memoryStream);
    byte[] imageArray = memoryStream.ToArray();

    ProfileViewModel.SignatureBase64 = Convert.ToBase64String(imageArray);
    DigitalSignaturePageViewModel.SignatureBase64 = Convert.ToBase64String(imageArray);
    img.Position = pos;
    GetSignature.Invoke(this, imgSource);

}
catch (ObjectDisposedException ex)
{
    Console.Write(ex.StackTrace);
}
catch (Exception ex)
{
    Debug.WriteLine(ex.Message);
}

【问题讨论】:

  • 内部异常详情是否引用了try块中的第一行?
  • 是的,它在第一行抛出异常: Stream img = await padView.GetImageStreamAsync(SignaturePad.Forms.SignatureImageFormat.Png);//.GetImage(ImageFormatType.Png); @Csharpest
  • 你如何初始化padView?
  • 像这样使用 xaml: @Csharpest
  • @Divyesh_008,我找到一个关于使用 SignaturePadView、github.com/xamarin/SignaturePad 和使用 var bitmap = await signatureView.GetImageStreamAsync(SignatureImageFormat.Png, Color.Black, Color.White, 1f) 的示例没有问题。

标签: c# xamarin xamarin.forms xamarin.android


【解决方案1】:

我使用 padView 得到了同样的异常。在完成图像的所有工作后,我已经清除了 SignaturePad。我做过 padView?.Clear();可能会有帮助。

【讨论】:

    猜你喜欢
    • 2022-01-11
    • 2020-04-23
    • 2017-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-20
    相关资源
    最近更新 更多