首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

关于CS1061报错(XX不包含XXX的定义,并且找不到类型为XX的第一个参.....)的一种可能的解决的办法

在我编程中,我遇到了一个这样的报错, 可是我引用的product类中又确实定义了这么一个方法, protected void BindPageData(int categoryID) {...dv.Sort = "SaleNumber DESC"; gvProduct.DataSource = dv; gvProduct.DataBind(); } 类中的方法代码...Pr_GetProductByFenlei " + categoryID + ""; return db.getDataTableBySQL(sql); } 在网上搜索了关于cs1061报错的解决办法...,都没有解决这个问题,后面在观察中,我除了定义了一个product.cs的类外,还定义了一个同名为Product.aspx的web窗体, 是不是因为是同名,所以在编译过程中出现了冲突呢?...我就把类的名字改了以下,ctrl+f5   完美运行。所以大家在遇到这种报错的是否,考虑是否是否是同名的问题。另外,不管是不是正确的决绝办法,都应该多尝试。

2.5K60

如何实现一个可以用 await 异步等待的 Awaiter

即便有些耗时操作没有返回可等待的类型,我们也可以用一句 Task.Run(action) 来包装(同步转异步 - 林德熙 中也有说明);不过副作用就是 Run 里面的方法在后台线程执行了(谁知道这是好处呢还是坏处呢...标注“此处为试验代码”的代码块表明此处代码并不完善,仅用于本文分析使用,不建议放到自己的项目中使用。 没有注释标注的代码块是用于研究的代码片段,不需要使用。 可点击下面的导航跳转到你希望的地方。...原来 GetAwaiter 方法需要是可以被调用方访问到的才行。 于是我们将 GetAwaiter 前面的访问修饰符改成 public。...现在提示变成了: await 要求类型 Test 包含适当的 GetAwaiter 方法。...此类 A 有一个可被访问到的 GetAwaiter 方法(扩展方法也行,这算是黑科技吗?)

2.3K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    C# await 高级用法

    如果一个类需要可以被等待,那么这个类必须满足以下条件 类里有一个 GetAwaiter 函数 GetAwaiter 有返回值,返回值需要继承 INotifyCompletion 并且有 bool...看完了本文,你就会知道如何让几乎所有类型包括 int 、string 、自定义的类都支持 await 。 如果真的不想看原理,那么请直接调到文章的最后,看到最后很快就知道如何做。...如果感兴趣 await 不一定会进入一个新的线程请看 There Is No Thread 使用 因为 await 需要找到一个 GetAwaiter 函数,这个函数即使是扩展方法也可以,所以其实上面的代码是这样写的...现在我准备在 object 加一个扩展方法,所有类型都可以等待,然后把这个扩展方法的 namespace 写为 System ,这样大家就不知道这个是我写的,过了一年我就告诉大家这是 C# 的特性,所有的类都可以等待...但是依旧遇到一些小伙伴一直以为全部的异步方法都需要await,看到我写了没有直接await的代码觉得很诡异,所以我在这里做个实验给大家看。

    87310

    C# 中的细节

    因为你所 await 的东西不一定是 Task/ValueTask,在 C# 中只要你的类中包含 GetAwaiter() 方法和 bool IsCompleted 属性,并且 GetAwaiter()...但是实际上,如果想要一个对象可被 foreach,只需要提供一个 GetEnumerator() 方法,并且 GetEnumerator() 返回的对象包含一个 bool MoveNext() 方法加一个....]; } } 不是只有 Index 才能使用索引# C# 8 引入了 Indexes 用于索引,例如使用 ^1 索引倒数第一个元素,但是其实并不是必须提供一个接收 Index 类型参数的 indexer...其实只需要写一个名字为 Deconstruct() 的方法,并且参数都是 out 的即可。...,允许你这样写代码: from c in list where c.Id > 5 select c; 但是上述代码中的 list 的类型不一定非得实现 IEnumerable,事实上,只要有对应名字的扩展方法就可以了

    2.3K00

    C# await 高级用法

    如果一个类需要可以被等待,那么这个类必须满足以下条件 类里有一个 GetAwaiter 函数 GetAwaiter 有返回值,返回值需要继承 INotifyCompletion 并且有 bool...看完了本文,你就会知道如何让几乎所有类型包括 int 、string 、自定义的类都支持 await 。 如果真的不想看原理,那么请直接调到文章的最后,看到最后很快就知道如何做。...如果感兴趣 await 不一定会进入一个新的线程请看 There Is No Thread 使用 因为 await 需要找到一个 GetAwaiter 函数,这个函数即使是扩展方法也可以,所以其实上面的代码是这样写的...{ return new HeabdsdnbKevx(); } } 随意写一个值,然后进行等待 现在我准备在 object 加一个扩展方法,所有类型都可以等待...,然后把这个扩展方法的 namespace 写为 System ,这样大家就不知道这个是我写的,过了一年我就告诉大家这是 C# 的特性,所有的类都可以等待。

    29120

    dotnet 使用 TaskTupleAwaiter 同时等待多个任务简化代码写法

    这个库的使用方法十分简单,只是创建一个扩展类...,里面就对 ValueTuple 扩展了 GetAwaiter 方法,根据 C# await 高级用法 博客可以了解到,对于 await 等待来说,只需要等待的类型存在 GetAwaiter 方法且此...GetAwaiter 方法返回一个实现了等待相关方法的类型的对象即可 例如对于由三个 Task 任务组成的 ValueTuple 加上可等待的功能的扩展方法可以是如下代码 public static...扩展方法,给 (Task, Task, Task) 扩展了可等待的方法,如此即可使用 await 进行等待 通过 TupleTaskAwaiter 实现具体的等待逻辑,核心实现依然是...pull origin 37c7473807581cde1215374856e5fd8f285c21a9 以上使用的是 gitee 的源,如果 gitee 不能访问,请替换为 github 的源。

    50820

    你所不知道的C#中的细节

    因为你所 await 的东西不一定是 Task/ValueTask,在 C# 中只要你的类中包含 GetAwaiter() 方法和 bool IsCompleted 属性,并且 GetAwaiter()...但是实际上,如果想要一个对象可被 foreach,只需要提供一个 GetEnumerator() 方法,并且 GetEnumerator() 返回的对象包含一个 bool MoveNext() 方法加一个....]; } } 不是只有 Index 才能使用索引 C# 8 引入了 Indexes 用于索引,例如使用 ^1 索引倒数第一个元素,但是其实并不是必须提供一个接收 Index 类型参数的 indexer...其实只需要写一个名字为 Deconstruct() 的方法,并且参数都是 out 的即可。...,允许你这样写代码: Copy from c in list where c.Id > 5 select c; 但是上述代码中的 list 的类型不一定非得实现 IEnumerable,事实上,只要有对应名字的扩展方法就可以了

    30210

    .NET系列走进Task:Task的回调执行与await

    前言 上一篇我们讲了对 Task 的基本定义:Task 代表一个任务,其具体类型可能是多种多样的,且有时候对我们来说完全是个黑盒。...,m_continuationObject 保存的数据类型也在变化 1、没有注册时:null 2、一个回调时:ContinueWithTaskContinuation 实例 3、超过一个回调时:元素类型是...这个和 AsyncMethodBuilder 内部的实现有关。(手动狗头,设计的太复杂了) 有限元状态机 下面是摘自百度百科的关于状态机的说明: 状态机可归纳为4个要素,即现态、条件、动作、次态。...3、状态机:由编译器生成,每个 async 方法 有且仅有一个,await 后面的代码会被编译到 状态机 的 MoveNext 方法中,注册为 Task 的回调。...4、AsyncMethodBuilder:状态机的重要组成部分,async 方法内外沟通的桥梁,和 async 方法的返回值类型绑定。

    2.6K30

    面试必备:C#多线程技术

    一个用户可以自定义的对象,此对象可用来向异步操作完成时为AsyncCallback委托方法传递应用程序特定的状态信息,也可通过此对象在委托中访问Endxxx方法。...最大的缺陷:没有提供进度通知等功能及多线程间控件的访问 特别声明 .NET Core以后不再支持异步委托(可狭义理解为不再支持APM那种形式),只能在.NET Framework中使用。...Task(和其相关类型)都被增强了,以包含更过支持TAP和异步编程的原语(如,GetAwaiter()、Task.WhenAll 等)。...下述异步方法即为:async或await关键字修饰的方法 注意: 1、异步方法的参数:不能使用“ref”参数和“out”参数,但是在异步方法内部可以调用含有这些参数的方法 2、异步方法的返回类型:返回类型有且只有...CS4008:无法等待void"或“CS1061:bool未包含GetAwaiter的定义,并且找不到可接受第一个bool类型参数的可访问扩展方法GetAwaiter(是否缺少 using 指令或程序集引用

    43940

    一个简单的模拟实例说明Task及其调度问题

    如下面的代码片段所示,我们只为抽象类JobScheduler定义了唯一的QueueJob方法来调度作为参数的Job对象。静态Current属性表示当前默认实现的调度器。...类型定义的静态Start方法中。...该方法通过参数指定具体的调度器,如果没有显式指定,默认采用JobScheduler的Current静态属性设置的默认调度器。...线程的数量通过构造函数的参数指定,线程在无事可做的时候被“挂起”以及有新的Job被调度时被“复苏”通过一个ManualResetEvent对象来完成。...五、异步等待 如果需要在某个Task执行之后接着执行后续的操作,我们可以调用其ContinueWith方法指定待执行的操作,现在我们将这个方法定义Job类型上。

    51320

    定义一组抽象的 Awaiter 的实现接口,你下次写自己的 await 可等待对象时将更加方便

    然而实现 Awaiter 没有现成的接口,它需要你按照编译器的要求为你的类型添加一些具有特定名称的属性和方法。...然而没有接口的帮助,我们编写起来就很难获得工具(如 ReSharper)自动生成代码的支持。 本文将分享我提取的自己实现 Awaiter 的接口。...public interface IAwaitable where TAwaiter : IAwaiter { TAwaiter GetAwaiter(); } public...定义一组抽象的 Awaiter 的实现接口,你下次写自己的 await 可等待对象时将更加方便 .NET 除了用 Task 之外,如何自己写一个可以 await 的对象?...欢迎转载、使用、重新发布,但务必保留文章署名 吕毅 (包含链接: https://blog.walterlv.com ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布

    83450

    理解Task和和async await

    ,所以我们一般不手动写GetAwaiter的延续方法,而是通过async await,大大简化了编程方式,说它是语法糖,那么有啥证据呢?...,编译器大致是这样的,以AsyncTaskResultMethod方法为例子: 将标识async的方法,打上AsyncStateMachine 特性 根据AsyncStateMachine 该特性,编译器为该方法新增一个以该方法名为名的类...,用AsyncTaskMethodBuilder的Create方法创建一个状态机对象赋值给对象的该类型的build字段,并且将状态state设置为-1.即初始状态,然后通过build字段启动状态机 实际上...的对象,它必须包含以下条件: 有一个GetAwaiter方法,为实例方法或者扩展方法 GetAwaiter方法的返回值类,必须包含以下条件 直接或者间接实现INotifyCompletion...有个布尔属性IsCompleted,且get开放 有个GetResult方法,返回值为void或者TResult 因此可以自定义一些能被await的类,关于如何自定义的细节,可以参考林德熙大佬的这篇文章

    2.3K30

    .NET 除了用 Task 之外,如何自己写一个可以 await 的对象?

    不过,有时需要写一些特别的异步方法,这时需要自己来实现一个可以异步等待的对象。 本文将讲述如何实现一个可等待对象,一个自定义的 Awaiter。...定义一组抽象的 Awaiter 的实现接口,你下次写自己的 await 可等待对象时将更加方便 .NET 除了用 Task 之外,如何自己写一个可以 await 的对象?...编写基本的 Awaiter 框架代码 先写一个空的类型,然后为它编写一个空的 GetAwaiter 方法,返回新的 WalterlvAwaiter 类型。...另外两个方法不是接口带来的,但是也是实现一个自定义的 Awaiter 必要的方法。 在你编写完以上两段代码之后,你的 await 就可以编译通过了。...因为我们还没有实现 WalterlvAwaiter 类型。 最重要的,是需要调用 OnCompleted 方法传入的 continuation 委托。

    54310

    C#多线程(16):手把手教你撸一个工作流

    不包含 async 、await 几乎不含包含多线程(有个读写锁) 不包含表达式树 几乎不含反射(有个小地方需要反射一下,但是非常简单) 没有复杂的算法 因为是基于任务(Task)的,所以可以轻松设计组合流程...由于只是讲述基础,所以不会包含很多种流程控制,这里只实现一些简单的。 先说明,别用到业务上。。。这个工作流非常简单,就几个功能,这个工作流是基于笔者的多线程系列文章的知识点。...微信名称:痴者工良,dotnet 的群基本我都在。 节点 在开始前,我们来设计几种流程控制的东西。 将一个 步骤/流程/节点 称为 step。 Then 一个普通的节点,包含一个任务。...多个 Then 节点,可以组成一条连续的工作流。 ? Parallel 并行节点,可以设置多个并行节点放到 Parallel 中,以及在里面为任一个节点创建新的分支。 ?...Name 和 Version 随便填,因为这里笔者没有对这几个字段做逻辑。 IDoFlowBuilder 是构建工作流的一个接口。 我们来写一个工作流测试一下。

    1.1K40

    async & await 的前世今生(Updated)

    但是对于Task来说,StartNew和Run的同时,既会创建新的线程,并且会立即启动它。 线程池    线程的创建是比较占用资源的一件事情,.NET 为我们提供了线程池来帮助我们创建和管理线程。...传入参数 static void Main() { new Thread(Go).Start("arg1"); // 没有匿名委托之前,我们只能这样传入一个object的参数 new...因为第一个线程还没有来得及把_isDone设置成true,第二个线程就进来了,而这不是我们想要的结果,在多个线程下,结果不是我们的预期结果,这就是线程不安全。...锁   要解决上面遇到的问题,我们就要用到锁。锁的类型有独占锁,互斥锁,以及读写锁等,我们这里就简单演示一下独占锁。...也就是如果方法不是.NET为我们提供的Async方法,我们需要自己创建Task,才会真正的去创建线程。

    779110

    《CLR via C#》笔记:第5部分 线程处理(2)

    【本博客有如下定义“Px x”,第一个代表书中的页数,第二个代表大致内容从本页第几段开始。...另外,构造器、属性访问器方法和事件访问器方法不能转变成异步函数。 2、异步函数不能使用任何out或ref参数。 3、不能在 catch,finally 或unsafe块中使用await操作符。...(P653 3) 除了增强使用Task 时的灵活性,异步函数另一个对扩展性有利的地方在于编译器可以在await的任何操作数上调用GetAwaiter。所以操作数不一定是Task对象。...可以是任意类型,只要提供了一个可以调用的 GetAwaiter方法。(P654 last) 异步函数和事件处理程序 异步函数的返回类型一般是 Task 或Task,它们代表函数的状态机完成。...然后,正在等待该Task 的代码会看到异常。但异步函数也可能使用了void返回类型,这时调用者就没有办法发现未处理的异常。

    1.1K40
    领券