摘要: 传统事件侦听模式潜在内存泄漏问题 普通事件使用 source.event+=listener.delegate,这时event所在的委托会持有listener的强引用;如果listener不再监听event时,需要使用source.event-=listener.delegate来解除引用关系。 若 阅读全文
posted @ 2025-06-07 21:34 BigBosscyb 阅读(175) 评论(0) 推荐(0)
摘要: 在上一篇C# 如何优雅地取消正在运行的任务 虽然取消了未结束的异步任务,但是被调用的同步方法仍未结束;代码不够优雅,所以在查看了B站博主的这个C#如何在异步任务中调用及取消一个长时间运行的同步方法(其一)视频后,发现他的做法比较优雅; 注意:这个👆视频介绍的方法适用于.NET Framework平 阅读全文
posted @ 2025-06-07 21:11 BigBosscyb 阅读(44) 评论(0) 推荐(0)
摘要: 第三方API中有一个查询订单信息的同步方法,GetOrderInfo(string orderNo);这个方法耗时比较久可能在1s到5s之间;我先调用了一次GetOrderInfo方法,然后立刻又调用第二次GetOrderInfo,我希望在第二次调用GetOrderInfo方法时结束掉上一次还未执行 阅读全文
posted @ 2025-06-07 21:09 BigBosscyb 阅读(20) 评论(0) 推荐(0)
摘要: DelegateHandler是一个抽象装饰器,被装饰的"HttpClentHandler",是网络请求的实际发送者;通过为HttpClentHandler添加装饰,能对"发送请求"动作,进行一些额外操作; 参考: Better timeout handling with HttpClient Ti 阅读全文
posted @ 2025-06-07 20:31 BigBosscyb 阅读(31) 评论(0) 推荐(0)
摘要: 参考:C# 多线程锁之ReaderWriterLockSlim public class SynchronizedCache { private ReaderWriterLockSlim cacheLock = new ReaderWriterLockSlim(); /// <summary> // 阅读全文
posted @ 2025-06-07 20:30 BigBosscyb 阅读(48) 评论(0) 推荐(0)
摘要: 有时我们会在控件的Loaded事件中执行数据初始化操作;但Loaded事件可能不只会触发一次(比如:控件放在TabControl中,切换TabItem便可发现Loaded事件会多次触发) 故如果我们在Loaded事件中处理初始化操作,且只希望Loaded事件处理方法只执行一次,该如何做? 采用标志位 阅读全文
posted @ 2025-06-07 20:28 BigBosscyb 阅读(65) 评论(0) 推荐(0)
摘要: 了解过double在计算机中的存储方式的,应该知道double类型,要判断"相等"是很困难的,比如我们写出下面一行代码 if(a==b){//do something...} 此时编译器会提示这个判断不严谨,他推荐: Math.Abs(a-b)<一个很小的数 于是乎,我在搜索引擎中搜索了一下,发现类 阅读全文
posted @ 2025-06-07 20:26 BigBosscyb 阅读(12) 评论(0) 推荐(0)
摘要: Captured variable is disposed in the outer scope 在for循环中使用Lambda表达式时,所有Lambda表达式可能会捕获同一个变量(例如循环计数器),导致所有闭包引用的是同一个变量的最终值。 为了避免这个问题:可以在循环内部创建一个新的局部变量,并将 阅读全文
posted @ 2024-10-29 13:50 BigBosscyb 阅读(69) 评论(0) 推荐(0)
摘要: 对于读锁:获取读锁后、其他线程可再获取读锁、但其他线程不能获取写锁(直到所有读锁释放) 如下代码示例: using System; using System.Threading; namespace ReaderWriterDemo { internal class Program { static 阅读全文
posted @ 2024-10-25 01:25 BigBosscyb 阅读(2) 评论(0) 推荐(0)
摘要: 大小端 内存地址的排列方式是从小到大的;使用VisualStudio新建main.c,键入以下代码: #include <stdio.h> int main() { //查看变量a的存储方式 //使用十六进制表示法声明一个变量a int a = 0x1234; printf("a address i 阅读全文
posted @ 2024-10-20 19:53 BigBosscyb 阅读(19) 评论(0) 推荐(0)