SynchronizationContext的研究之一(非WPF及Forms)


 1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Text;
5 using System.Threading;
6
7
8 namespace SynchronizationTest003
9 {
10 class Program
11 {
12 static void Main(string[] args)
13 {
14 SynchronizationContext sc = new SynchronizationContext();
15 Console.WriteLine(Thread.CurrentThread.ManagedThreadId);
16 testA(sc);
17
18 Console.ReadKey();
19 }
20
21 public static void testA(object state)
22 {
23 SynchronizationContext sc = state as SynchronizationContext;
24 Console.WriteLine("Start");
25 Console.WriteLine("Func A‘s ManagedThreadID is: " + Thread.CurrentThread.ManagedThreadId);
26 sc.Post(testB,state);
27 Console.WriteLine("End");
28 }
29
30 public static void testB(object state)
31 {
32 Console.WriteLine("Func B‘s ManagedThreadID is: " + Thread.CurrentThread.ManagedThreadId);
33 Thread.Sleep(3000);
34 SynchronizationContext sc = state as SynchronizationContext;
35 sc.Post(testC,null);
36 }
37
38 public static void testC(object state)
39 {
40 Console.WriteLine("Func C‘s ManagedThreadID is: " + Thread.CurrentThread.ManagedThreadId);
41 Thread.Sleep(3000);
42 SynchronizationContext sc = state as SynchronizationContext;
43 }
44 }
45 }

运行结果:

时间: 2024-10-06 07:30:44

SynchronizationContext的研究之一(非WPF及Forms)的相关文章

设置WPF窗口相对于非WPF窗口的位置

原文:设置WPF窗口相对于非WPF窗口的位置 在前一个Post当中,指出了在WPF的WindowInteropHelper类中的一个BUG:通过WindowInteropHelper的Owner属性不能实现把WPF窗口的Owner属性设置为一个非WPF窗口的句柄. 在我的Post帖出后不到一天,在WPF SDK的Blog上,就针对这个BUG给出了一个非常完美的解决方案.既然不同通过设置WindowStartupLocation.CenterOwner来改变窗口的位置.那么我们就用WindowSt

2012年的一次sql注入(纯属技术研究,非攻击行为)

1.   收集信息 花了挺长时间来浏览job.xxx.edu.cn,这里只写后边入侵会用到的一些信息,这个网站是深圳某科技公司做的,在首页的登录窗口部分有三种人员,分别是用人单位.毕业生和管理员. 使用Acunetix扫描job. xxx.edu.cn,扫出在/index_department.php页面存在SQL注入漏洞. 虽然Acunetix扫描出dep_id和gradyear两个参数都存在SQL注入漏洞,但后来经过实际测试,只有dep_id可以利用. Acunetix还扫描出存在phpin

将 C++/WinRT 中的线程切换体验带到 C# 中来(WPF 版本)

原文:将 C++/WinRT 中的线程切换体验带到 C# 中来(WPF 版本) 如果你要在 WPF 程序中使用线程池完成一个特殊的任务,那么使用 .NET 的 API Task.Run 并传入一个 Lambda 表达式可以完成.不过,使用 Lambda 表达式会带来变量捕获的一些问题,比如说你需要区分一个变量作用于是在 Lambda 表达式中,还是当前上下文全局(被 Lambda 表达式捕获到的变量).然后,在静态分析的时候,也难以知道此 Lambda 表达式在整个方法中的执行先后顺序,不利于分

WPF使用其它的命名空间(宝典1)

Xaml是实例化的,net对象的通用方法,包括那些位于非WPF名称空间下的和自己创建的名称空间中的对象 为使用没有在wpf中定义的类,需要将.net名称空间映射到xml名称空间,可以使用这样的一特殊的语法来实现这样的工作 xmlns:prefix="clr-namespace:Namespace;assembly=assemblName" 如System名称空间的类型如下: xmlns:sys="clr-namespace:System;assembly=mscorlib&q

WPF学习之深入浅出话模板

图形用户界面应用程序较之控制台界面应用程序最大的好处就是界面友好.数据显示直观.CUI程序中数据只能以文本的形式线性显示,GUI程序则允许数据以文本.列表.图形等多种形式立体显示. 用户体验在GUI程序设计中起着举足轻重的作用-----用户界面设计成什么样看上去才足够的漂亮?控件如何安排才简单易用并且少犯错误?这些都是设计师需要考虑的问题.WPF系统不但支持传统的Winfrom编程的用户界面和用户体验设计,更支持使用专门的设计工具Blend进行专业设计,同时还推出了以模板为核心的新一代设计理念.

将WPF版的弹幕播放器给优化了一下

年前较闲的时候研究了一下WPF的性能优化,练手的时将之前写的弹幕播放器给重新写了一下.年前的时间不大够,没有写完,这两天接着弄了一下,基本上弄得差不多了. 主要重写了底层的渲染算法,优化后效果还是非常明显的,试了几个BiliBili上的热门的弹幕,基本上满屏的弹幕依然能流畅播放.在我的i5-750上,cpu占用基本上在16%左右(光播放视频基本上CPU就占用了7%),还是比较令人满意的.并且我这里还是用的比较简单的算法,一开始就把所有的弹幕全部给加载了,也没有使用多线程渲染,还是有一定的优化空间

WPF 图片浏览 伪3D效果

原文:WPF 图片浏览 伪3D效果 首先上效果图: 因项目要求,需要把图片以"好看"."炫"的效果展示出来,特地研究了一下WPF关于3D方面的制作,奈何最终成果只是能够画出一个立方体并使之旋转. 项目时间仅剩两天,只好放弃3D另找出路,于是就想起了Flash中各种"炫丽"的动画效果,图片按椭圆排列,并且旋转. 于是开始代码,然后发现关于椭圆啊.正玄余玄.x,y,r等等数学知识都忘得光光了,仅有思路没有进展,无奈之下开始百度恶补数学知识.图形变换.

WPF工具开发: 第三库选择

PropertyGrid Winforms's PropertyGrid 非WPF原生支持, 需要借助WinFormHost 风格不可定制 PropertyInspectorView 算是"官方"库, 风格不可定制 WPF Property Grid 开源 功能还不够完善 可以定制风格 PropertyEditor for WPF 开源 功能比较实用, 有自己的特色 Actipro PropertyGrid 商业控件 Mindscape WPF Property Grid 商业控件 D

WPF 中如何使用第三方控件 ,可以使用WindowsFormsHost 类

允许在 WPF 页面上承载 Windows Forms控件的元素. 命名空间:   System.Windows.Forms.Integration 程序集:   WindowsFormsIntegration(在 WindowsFormsIntegration.dll 中) 用于 XAML 的 XMLNS:http://schemas.microsoft.com/winfx/2006/xaml/presentation, http://schemas.microsoft.com/netfx/2