在Windows中,一个线程的栈空间的默认大小是1MB,对于MFC UI主线程,一般其栈空间的大小均为1MB,当UI主线程的数据较大时就可能会造成栈溢出,从而导致程序出现异常。那么出现栈溢出该如何解决呢?可以通过使用堆内存来消除这样的问题,即很多时候都用new来的堆内存。对于类数据,则直接使用new来的对象来存储。系统会给每个程序分配一个4GB的虚拟空间,其中包括存放代码的空间,以及存放数据的空间。正常情况下,这样的内存已经足够程序使用了。所以,对于大型UI程序,要将栈内存和堆内存有效的结合起来,这样才能保证程序的正常运行与使用。
开发windows Phone程序的时候,有时候会想要用具体某种的主题,比如说浅色主题,那么,如果一个拥有深色主题的手机安装了不就搞笑了,所以我
探索了下如果自定义程序的主题
第一步,C:\Program Files (x86)\Microsoft SDKs\Windows Phone\v7.1\Design 下面有相应的主题文件,主要有System.Windows.xaml和ThemeResources.xaml
把这两个文件拷贝到你的项目中去,比如说你要白色背景青绿色提醒色的话,就在lightlime下面拷贝这两个文件
第二步,在App.xaml的resources里面添加
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="System.Windows.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
第三步,在app.xaml.cs里面添加
InitializeComponent();
// 这一句为添加句
this.MergeCustomColors();
// Phone-specific initialization
InitializePhoneApplication();
以及添加相应方法
private void MergeCustomColors()
{
var dictionaries = new ResourceDictionary();
string source = String.Format("/BingImageSearch;component/CustomTheme/ThemeResources.xaml");
var themeStyles = new ResourceDictionary { Source = new Uri(source, UriKind.Relative) };
dictionaries.MergedDictionaries.Add(themeStyles);
ResourceDictionary appResources = App.Current.Resources;
foreach (DictionaryEntry entry in dictionaries.MergedDictionaries[0])
{
SolidColorBrush colorBrush = entry.Value as SolidColorBrush;
SolidColorBrush existingBrush = appResources[entry.Key] as SolidColorBrush;
if (existingBrush != null && colorBrush != null)
{
existingBrush.Color = colorBrush.Color;
}
}
}
这样就可以定义了,还有更强的就是,你可以通过edit上面的两个文件,自己定义想要的效果
为什么叫大结局呢?因为推送通知服务就只有三种,前面扯了两种,就剩下一种——Raw通知。
前面我们通过两节的动手实验,相信大家都知道了,推送通知其实并不复杂,为什么呢?你看到了的,不管是哪种方式,使用方法基本一样,如果你不愿意写代码的话,完全可以把代码Copy几下就完事了,三种推送通知的实现代码是一样的,而仅仅是发送的内容不同罢了。
Raw推送通知比起前面两种更简单,因为它没有规范的格式,只要你向指定URI POST一个字节流数组就OK,也就是说,只要能变成byte[]的东西都可以发送。不过,不应该发送过大的数据,一般用于发送一些简短的文本信息就行了,别想着用来发送文件!!
严重提醒:要接收Raw通知,你的WP应用程序必须在前台运行,不然是收不到的,之与Toast通知可不一样,如果你的程序不在前台运行,推送的通知就会被XX掉。
好了,F话就不说了,开始操练吧。
先做发送通知的服务器端,这回就用WPF来做吧,界面我先截个TU。
这就是用WPF的好处,截图中大家未必能看到窗口上用到哪些控件,设置了哪些属性,但是,如果我把XAML一贴,我想大家就懂了。
好,前台干好了,去搞搞后台吧。
有没有觉得代码很熟悉?和前两节中的例子像不?
好了,服务器端Done,下面轮到WP客户端了。
布局不用TU了,放心,无图有真相。上XAML。
简单吧,就一个控件——ListBox,待会儿我们接受到的通知,就扔到它里面。
OK,看看后台的C#代码。
避免有朋友说代码看不懂,这回我是Ctrl + A后再贴出来的。
下面来执行一下,首先运行WP端,可以同时运行,随你喜欢。,但至少要让WP模拟器或手机收到云服务器分配的URI。
把这个URI复制,填到服务器端的窗口中,然后输入你要发送的东东,点击“发送”。
嗯,就是这样用,应该不复杂吧?
在收发消息的过程中,编码时建议使用UTF-8,貌似这个不会有乱码。
哈,牛就吹到这了,下一节我们玩一玩比较恐怖的东西——Socket。
1楼whuarui20104天前 20:51刚刚用豆约翰博客备份专家备份了您的全部博文,期待博主更好更多的博文。Re: tcjiaan3天前 00:11回复whuarui2010n哈?不是吧?这么夸张,大可不必,我只是分享一下学习经验,供大家参考而已。