热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Xamarin表单-异步任务“EventHandler的签名(返回类型)与事件类型不匹配”

如何解决《Xamarin表单-异步任务“EventHandler的签名(返回类型)与事件类型不匹配”》经验,为你挑选了1个好方法。

当我将Xamarin表单更新为3.2.0或更高版本时,出现以下错误:

Error       Position 68:29. Signature (return type) of EventHandler
"TimeToSport.Views.ItemsPage.OnCanvasViewPaintSurfaceAsync" doesn't match
the event type  TimeToSport 
E:\Xamarin Projects\TimeToSport_master\TimeToSport\TimeToSport\Views\Main\ItemsPage.xaml    68  

错误来自以下代码(xaml):


在CS文件中:

SKCanvas canvas = surface.Canvas;

当我使用Xamarin表单版本3.1.0时,我没有收到此错误,并且一切正常。但是,我必须为一些需要使用的新功能更新Xamarin表单。

如何解决此错误?

编辑:

OnCanvasViewPaintSurfaceAsync:

    async Task OnCanvasViewPaintSurfaceAsync(object sender, SKPaintSurfaceEventArgs args1)

    {
        args = args1;
        await drawGaugeAsync();

    }

public async Task drawGaugeAsync()
    {
        // Radial Gauge Constants
        int uPadding = 130;
        int side = 370;
        int radialGaugeWidth = 20;

        // Line TextSize inside Radial Gauge
        int lineSize1 = 220;
        int lineSize2 = 70;
        int lineSize3 = 80;

        // Line Y Coordinate inside Radial Gauge
        int lineHeight1 = 175;
        int lineHeight2 = 275;
        int lineHeight3 = 350;

        // Start & End Angle for Radial Gauge
        //float startAngle = (360/24)*23+90;
        float sweepAngle = 360;

        try
        {

            // Getting Canvas Info 
            SKImageInfo info = args.Info;
            SKSurface surface = args.Surface;
            SKCanvas canvas = surface.Canvas;
            progressUtils.setDevice(info.Height, info.Width);
            canvas.Clear();


            //canvas.DrawColor(SKColor.Parse("#2196F3")); //Background upper
            // Getting Device Specific Screen Values
            // -------------------------------------------------

            // Top Padding for Radial Gauge
            float upperPadding = progressUtils.getFactoredHeight(uPadding);

            /* Coordinate Plotting for Radial Gauge
            *
            *    (X1,Y1) ------------
            *           |   (XC,YC)  |
            *           |      .     |
            *         Y |            |
            *           |            |
            *            ------------ (X2,Y2))
            *                  X
            *   
            *To fit a perfect Circle inside --> X==Y
            *       i.e It should be a Square
            */

            // Xc & Yc are center of the Circle
            int Xc = info.Width / 2;
            float Yc = progressUtils.getFactoredHeight(side);
            float Yc2 = progressUtils.getFactoredHeight(445);

            // X1 Y1 are lefttop cordiates of rectange
            int X1 = (int)(Xc - Yc);
            int Y1 = (int)(Yc - Yc + upperPadding + 9); //+55

            int X12 = (int)(Xc - Yc2);
            int Y12 = (int)(Yc2 - Yc2 + upperPadding - 22.5);

            // X2 Y2 are rightbottom cordiates of rectange
            int X2 = (int)(Xc + Yc);
            int Y2 = (int)(Yc + Yc + upperPadding + 9); //+55

            int X22 = (int)(Xc + Yc2);
            int Y22 = (int)(Yc2 + Yc2 + upperPadding - 22.5);



            //  Empty Gauge Styling // basis
            SKPaint paint1 = new SKPaint
            {
                Style = SKPaintStyle.Stroke,
                IsAntialias = true,
                Color = Color.FromHex("#f7f7f7").ToSKColor(),                   // Colour of Radial Gauge
                StrokeWidth = progressUtils.getFactoredWidth(radialGaugeWidth - 10), // Width of Radial Gauge
                StrokeCap = SKStrokeCap.Butt                                 // Round Corners for Radial Gauge
            };

            // Filled Gauge Styling // slaap
            SKPaint paint2 = new SKPaint
            {
                Style = SKPaintStyle.Stroke,
                IsAntialias = true,
                Color = Color.FromHex("#183f7c").ToSKColor(),                   // Overlay Colour of Radial Gauge
                StrokeWidth = progressUtils.getFactoredWidth(radialGaugeWidth + 10), // Overlay Width of Radial Gauge
                StrokeCap = SKStrokeCap.Butt                                 // Round Corners for Radial Gauge
            };

            //  Empty Gauge Styling // voeding
            SKPaint paint3 = new SKPaint
            {
                Style = SKPaintStyle.Stroke,
                IsAntialias = true,
                Color = Color.FromHex("#c45256").ToSKColor(),                   // Colour of Radial Gauge
                StrokeWidth = progressUtils.getFactoredWidth(radialGaugeWidth + 10), // Width of Radial Gauge
                StrokeCap = SKStrokeCap.Butt                                 // Round Corners for Radial Gauge
            };

            // Filled Gauge Styling // sport
            SKPaint paint4 = new SKPaint
            {
                Style = SKPaintStyle.Stroke,
                IsAntialias = true,
                Color = Color.FromHex("#5bd363").ToSKColor(),                   // Overlay Colour of Radial Gauge
                StrokeWidth = progressUtils.getFactoredWidth(radialGaugeWidth + 15), // Overlay Width of Radial Gauge
                StrokeCap = SKStrokeCap.Butt                                  // Round Corners for Radial Gauge
            };

            SKPaint paint5 = new SKPaint // voeding na sport
            {
                Style = SKPaintStyle.Stroke,
                IsAntialias = true,
                Color = Color.FromHex("#c45256").ToSKColor(),                   // Overlay Colour of Radial Gauge
                StrokeWidth = progressUtils.getFactoredWidth(radialGaugeWidth + 10), // Overlay Width of Radial Gauge
                StrokeCap = SKStrokeCap.Butt                              // Round Corners for Radial Gauge
            };

            SKPaint paint6 = new SKPaint // lokale tijd
            {
                Style = SKPaintStyle.Stroke,
                IsAntialias = true,
                Color = Color.FromHex("#ffb342").ToSKColor(),                   // Overlay Colour of Radial Gauge
                StrokeWidth = progressUtils.getFactoredWidth(radialGaugeWidth + 25), // Overlay Width of Radial Gauge
                StrokeCap = SKStrokeCap.Butt                              // Round Corners for Radial Gauge
            };

            SKPaint paint7 = new SKPaint // vierkant 1 
            {
                Style = SKPaintStyle.StrokeAndFill,
                IsAntialias = true,
                Color = Color.FromHex("#ffffff").ToSKColor(),                   // Overlay Colour of Radial Gauge
                StrokeWidth = progressUtils.getFactoredWidth(radialGaugeWidth + 60), // Overlay Width of Radial Gauge
                StrokeCap = SKStrokeCap.Round                              // Round Corners for Radial Gauge
            };


            // Defining boundaries for Gauge
            SKRect rect = new SKRect(X1, Y1, X2, Y2);
            SKRect rectBackground1 = new SKRect(X1 - 75, Y1 - 75, X2 + 75, Y2 + 75);
            SKRect rect2 = new SKRect(X12, Y12, X22, Y22);

            //canvas.DrawRect(rect, paint1);
            //canvas.DrawOval(rect, paint1);

            // Rendering Empty Gauge
            SKPath path7 = new SKPath();
            //path7.AddRoundedRect(rectBackground1, 5, 5, SKPathDirection.Clockwise);
            //canvas.DrawPath(path7, paint7);

            SKPath path1 = new SKPath();
            path1.AddArc(rect, -90, sweepAngle);
            canvas.DrawPath(path1, paint1);

            // Rendering Filled Gauge
            SKPath path2 = new SKPath();
            path2.AddArc(rect, (360 / 24) * 23 - 90, (float)sweepAngleSlider.Value);
            canvas.DrawPath(path2, paint2);

            SKPath path3 = new SKPath();
            path3.AddArc(rect, (360 / 24) * 8.50f - 90, (float)sweepAngleSlider2.Value);
            canvas.DrawPath(path3, paint3);

            SKPath path4 = new SKPath();
            path4.AddArc(rect, (360 / 24) * 9.25f - 90, (float)sweepAngleSlider3.Value);
            canvas.DrawPath(path4, paint4);

            SKPath path5 = new SKPath();
            path5.AddArc(rect, (360 / 24) * 12f - 90, (float)sweepAngleSlider4.Value);
            canvas.DrawPath(path5, paint5);

            //lokale tijd onderaan


            /*// Rendering Empty Gauge
            SKPath path3 = new SKPath();
            path3.AddArc(rect2, startAngle, sweepAngle);
            canvas.DrawPath(path3, paint3);

            // Rendering Filled Gauge
            SKPath path4 = new SKPath();
            path4.AddArc(rect2, startAngle, (float)sweepAngleSlider2.Value);
            canvas.DrawPath(path4, paint4);*/


            //---------------- Drawing Text Over Gauge ---------------------------

            // frequentie dagen
            using (SKPaint skPaint = new SKPaint())
            {
                skPaint.Style = SKPaintStyle.Fill;
                skPaint.IsAntialias = true;
                skPaint.Color = SKColor.Parse("#2b2b2b");
                skPaint.TextAlign = SKTextAlign.Center;
                skPaint.TextSize = progressUtils.getFactoredHeight(lineSize1);
                skPaint.Typeface = SKTypeface.FromFamilyName(
                                    "Arial",
                                    SKFontStyleWeight.Bold,
                                    SKFontStyleWidth.Normal,
                                    SKFontStyleSlant.Upright);



                // Drawing Achieved Minutes Over Radial Gauge
                if (sw_listToggle.IsToggled)
                    canvas.DrawText(/*monthlyWorkout +*/ "3", Xc, Yc + progressUtils.getFactoredHeight(lineHeight1), skPaint);
                else
                    canvas.DrawText(/*dailyWorkout + */ "3-4", Xc, Yc + progressUtils.getFactoredHeight(lineHeight1), skPaint);
            }

            // "per week"
            using (SKPaint skPaint = new SKPaint())
            {
                skPaint.Style = SKPaintStyle.Fill;
                skPaint.IsAntialias = true;
                skPaint.Color = SKColor.Parse("#424242");
                skPaint.TextAlign = SKTextAlign.Center;
                skPaint.TextSize = progressUtils.getFactoredHeight(55);


                //ff een testje
                canvas.DrawText(Application.Current.Properties["geslacht"].ToString(), Xc, Yc + progressUtils.getFactoredHeight(lineHeight2), skPaint);
                canvas.DrawText("06", X2 + 80, (Y1 + Y2) / 2 + 22, skPaint);
                canvas.DrawText("12", Xc, Y2 + 115, skPaint);
                canvas.DrawText("18", X1 - 100, (Y1 + Y2) / 2 + 22, skPaint);
                canvas.DrawText("00", Xc, Y1 - 60, skPaint);
            }

            // Goal Minutes Text Styling
            using (SKPaint skPaint = new SKPaint())
            {
                skPaint.Style = SKPaintStyle.Fill;
                skPaint.IsAntialias = true;
                skPaint.Color = SKColor.Parse("#e2797a");
                skPaint.TextAlign = SKTextAlign.Center;
                skPaint.TextSize = progressUtils.getFactoredHeight(lineSize3);

                // Drawing Text Over Radial Gauge
                // if (sw_listToggle.IsToggled)
                //canvas.DrawText("Goal " + goal + " Min", Xc, Yc + progressUtils.getFactoredHeight(lineHeight3), skPaint);
                //else
                //{
                //canvas.DrawText("Goal " + goal / 30 + " Min", Xc, Yc + progressUtils.getFactoredHeight(lineHeight3), skPaint);
                //}


            }

            sportenTijdText1 = "09:15";
            etenVoorTijdText1 = "08:30";
            etenNaTijdText1 = "09:00";
            slapenTijdText1 = "23:00";
            sportenTijdText2 = "10:45";
            etenVoorTijdText2 = "12:00";
            etenNaTijdText2 = "12:30";
            slapenTijdText2 = "08:00";

            SportKnop.Text = sportenTijdText1 + " - Sporten - " + sportenTijdText2;
            VoedingVoorKnop.Text = etenVoorTijdText1 + " - Eten - " + etenNaTijdText1;
            VoedingNaKnop.Text = etenVoorTijdText1 + " - Eten - " + etenNaTijdText2;
            SlaapKnop.Text = slapenTijdText1 + " - Slapen - " + slapenTijdText2;

            Device.StartTimer(TimeSpan.FromSeconds(1), () =>
            {
                Device.BeginInvokeOnMainThread(() => tijd.Text = DateTime.Now.ToString("HH.mm"));
                Device.BeginInvokeOnMainThread(() => TijdKnop.Text = "Huidige tijd - " + DateTime.Now.ToString("HH:mm"));
                return true;
            });
            SKPath path6 = new SKPath();
            path6.AddArc(rect, (360 / 24) * float.Parse(tijd.Text, CultureInfo.InvariantCulture.NumberFormat) + -91.5f, (float)sweepAngleSlider5.Value);
            canvas.DrawPath(path6, paint6);

        }
        catch (Exception e)
        {
            Debug.WriteLine(e.StackTrace);
        }
    }

Prateek.. 9

从最近的Xamarin表单更新背后的代码不支持将Task返回类型用作事件处理程序的签名。

删除Task并替换为void

async void OnCanvasViewPaintSurfaceAsync(object sender, SKPaintSurfaceEventArgs args1)
{
    args = args1;
    await drawGaugeAsync();

}

public async Task drawGaugeAsync(){

}

更新drawGaugeAsync()可以返回Task



1> Prateek..:

从最近的Xamarin表单更新背后的代码不支持将Task返回类型用作事件处理程序的签名。

删除Task并替换为void

async void OnCanvasViewPaintSurfaceAsync(object sender, SKPaintSurfaceEventArgs args1)
{
    args = args1;
    await drawGaugeAsync();

}

public async Task drawGaugeAsync(){

}

更新drawGaugeAsync()可以返回Task


推荐阅读
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • Spring源码解密之默认标签的解析方式分析
    本文分析了Spring源码解密中默认标签的解析方式。通过对命名空间的判断,区分默认命名空间和自定义命名空间,并采用不同的解析方式。其中,bean标签的解析最为复杂和重要。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 前景:当UI一个查询条件为多项选择,或录入多个条件的时候,比如查询所有名称里面包含以下动态条件,需要模糊查询里面每一项时比如是这样一个数组条件:newstring[]{兴业银行, ... [详细]
  • 摘要: 在测试数据中,生成中文姓名是一个常见的需求。本文介绍了使用C#编写的随机生成中文姓名的方法,并分享了相关代码。作者欢迎读者提出意见和建议。 ... [详细]
  • 本文介绍了如何使用Express App提供静态文件,同时提到了一些不需要使用的文件,如package.json和/.ssh/known_hosts,并解释了为什么app.get('*')无法捕获所有请求以及为什么app.use(express.static(__dirname))可能会提供不需要的文件。 ... [详细]
  • 本文介绍了Android中的assets目录和raw目录的共同点和区别,包括获取资源的方法、目录结构的限制以及列出资源的能力。同时,还解释了raw目录中资源文件生成的ID,并说明了这些目录的使用方法。 ... [详细]
  • 基于移动平台的会展导游系统APP设计与实现的技术介绍与需求分析
    本文介绍了基于移动平台的会展导游系统APP的设计与实现过程。首先,对会展经济和移动互联网的概念进行了简要介绍,并阐述了将会展引入移动互联网的意义。接着,对基础技术进行了介绍,包括百度云开发环境、安卓系统和近场通讯技术。然后,进行了用户需求分析和系统需求分析,并提出了系统界面运行流畅和第三方授权等需求。最后,对系统的概要设计进行了详细阐述,包括系统前端设计和交互与原型设计。本文对基于移动平台的会展导游系统APP的设计与实现提供了技术支持和需求分析。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 阿,里,云,物,联网,net,core,客户端,czgl,aliiotclient, ... [详细]
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • 本文讨论了使用差分约束系统求解House Man跳跃问题的思路与方法。给定一组不同高度,要求从最低点跳跃到最高点,每次跳跃的距离不超过D,并且不能改变给定的顺序。通过建立差分约束系统,将问题转化为图的建立和查询距离的问题。文章详细介绍了建立约束条件的方法,并使用SPFA算法判环并输出结果。同时还讨论了建边方向和跳跃顺序的关系。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 颜色迁移(reinhard VS welsh)
    不要谈什么天分,运气,你需要的是一个截稿日,以及一个不交稿就能打爆你狗头的人,然后你就会被自己的才华吓到。------ ... [详细]
author-avatar
伸手以后
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有