第三天
(1)使用图像控件
http://download.microsoft.com/download/2/3/1/231D6249-0ABB-4DCA-8685-4683FBE48512/Working_with_the_Image_Control_Day_3_Part_1_subtitle.wmv
(2)处理资源和样式
http://download.microsoft.com/download/4/B/A/4BA9E8FB-1C59-4CD8-87B2-6AD77979ECD4/Working_with_Resources_and_Styles_Day_3_Part_2_subtitle.wmv
(3)在 XAML 页面之间浏览和传递数据
http://download.microsoft.com/download/A/5/D/A5DFF34A-1A67-41C9-98C8-CB59B178FCBE/Navigating_and_Passing_Data_between_XAML_Pages_Day_3_Part_3_subtitle.wmv
(4)使用应用程序栏
http://download.microsoft.com/download/2/3/1/231D6249-0ABB-4DCA-8685-4683FBE48512/Working_with_the_Application_Bar_Day_3_Part_4_subtitle.wmv
(5)利用 Canvas 作为对话框
http://download.microsoft.com/download/1/7/E/17E7DF26-CA03-45C5-AA47-D73469ED034A/Using_a_Canvas_as_a_Dialog_Day_3_Part_5_subtitle.wmv
(6)理解独立存储
http://download.microsoft.com/download/1/7/E/17E7DF26-CA03-45C5-AA47-D73469ED034A/Understanding_Isolated_Storage_Day_3_Part_6_subtitle.wmv
(7)独立存储、ListBox 和数据模板
http://download.microsoft.com/download/A/5/D/A5DFF34A-1A67-41C9-98C8-CB59B178FCBE/Isolated_Storage_ListBox_and_DataTemplates_Day_3_Part_7_subtitle.wmv
(8)逻辑删除和任务切换
http://download.microsoft.com/download/1/7/E/17E7DF26-CA03-45C5-AA47-D73469ED034A/Tombstoning_and_Task_Switching_Day_3_Part_8_subtitle.wmv
(9)添加不同的输入值范围
http://download.microsoft.com/download/2/0/D/20D5F15E-BA30-4E9F-8C85-25C497CF15AB/Adding_Different_Input_Scopes_Day_3_Part_9_subtitle.wmv
(10)GPS、位置 API 和调用 Web 服务
http://download.microsoft.com/download/A/5/D/A5DFF34A-1A67-41C9-98C8-CB59B178FCBE/GPS_Location_API_and_Calling_Web_Services_Day_3_Part_10_subtitle.wmv
(11)图像背景、方向更改和控件可见性
http://download.microsoft.com/download/A/5/D/A5DFF34A-1A67-41C9-98C8-CB59B178FCBE/Image_Background_Orientation_Changes_and_Control_Visibility_Day_3_Part_11_subtitle.wmv
(12)第三天家庭作业
http://download.microsoft.com/download/A/5/D/A5DFF34A-1A67-41C9-98C8-CB59B178FCBE/Day_3_Homework_Assignment_subtitle.wmv
(13)第三天家庭作业解决方案
http://download.microsoft.com/download/A/5/D/A5DFF34A-1A67-41C9-98C8-CB59B178FCBE/Day_3_Homework_Solution_subtitle.wmv
第四天
(1)简介
http://download.microsoft.com/download/A/5/D/A5DFF34A-1A67-41C9-98C8-CB59B178FCBE/Introduction_Day_4_Part_1_subtitle.wmv
(2)开始活动
http://download.microsoft.com/download/A/5/D/A5DFF34A-1A67-41C9-98C8-CB59B178FCBE/Getting_Started_Activities_Day_4_Part_2_subtitle.wmv
(3)MainPage 初始设置
http://download.microsoft.com/download/A/5/D/A5DFF34A-1A67-41C9-98C8-CB59B178FCBE/Initial_MainPage_Setup_Day_4_Part_3_subtitle.wmv
(4)创建注释命名约定
http://download.microsoft.com/download/2/0/D/20D5F15E-BA30-4E9F-8C85-25C497CF15AB/Creating_the_Note_Naming_Convention_Day_4_Part_4_subtitle.wmv
(5)将 Note Class 绑定到 ListBox DataTemplate
http://download.microsoft.com/download/2/0/D/20D5F15E-BA30-4E9F-8C85-25C497CF15AB/Binding_the_Note_Class_to_the_ListBox_DataTemplate_Day_4_Part_5_subtitle.wmv
(6)添加注释页面初始设置
http://download.microsoft.com/download/A/5/D/A5DFF34A-1A67-41C9-98C8-CB59B178FCBE/Initial_Add_Note_Page_Setup_Day_4_Part_6_subtitle.wmv
(7)调用 TerraService Web 服务
http://download.microsoft.com/download/2/0/D/20D5F15E-BA30-4E9F-8C85-25C497CF15AB/Calling_the_TerraService_Web_Service_Day_4_Part_7_subtitle.wmv
(8)保存新注释
http://download.microsoft.com/download/7/1/0/710733A5-5BE6-436E-AC7D-A265170CBB4B/Saving_a_New_Note_Day_4_Part_8_subtitle.wmv
(9)ViewEdit 页面初始设置
http://download.microsoft.com/download/A/5/D/A5DFF34A-1A67-41C9-98C8-CB59B178FCBE/Initial_ViewEdit_Page_Setup_Day_4_Part_9_subtitle.wmv
(10)在 MainPage 与 ViewEdit 页面之间导航
http://download.microsoft.com/download/A/5/D/A5DFF34A-1A67-41C9-98C8-CB59B178FCBE/Navigation_Between_MainPage_and_ViewEdit_Pages_Day_4_Part_10_subtitle.wmv
(11)在 ViewEdit 页面上切换到Edit 模式并保存更改
http://download.microsoft.com/download/7/1/0/710733A5-5BE6-436E-AC7D-A265170CBB4B/Switching_to_Edit_Mode_on_the_ViewEdit_Page_and_Saving_Changes_Day_4_Part_11_subtitle.wmv
(12)ViewEdit 页面的删除注释功能
http://download.microsoft.com/download/1/7/E/17E7DF26-CA03-45C5-AA47-D73469ED034A/ViewEdit_Page_Delete_Note_Functionality_Day_4_Part_12_subtitle.wmv
(13)在 MainPage 上添加帮助屏幕
http://download.microsoft.com/download/2/0/D/20D5F15E-BA30-4E9F-8C85-25C497CF15AB/Adding_Help_Screen_on_MainPage_Day_4_Part_13_subtitle.wmv
(14)存储应用程序状态第 1 部分- MainPage
http://download.microsoft.com/download/7/1/0/710733A5-5BE6-436E-AC7D-A265170CBB4B/Storing_Application_State_Part_1_MainPage_Day_4_Part_14_subtitle.wmv
(15)存储应用程序状态第 2 部分 - Add 页面
http://download.microsoft.com/download/7/1/0/710733A5-5BE6-436E-AC7D-A265170CBB4B/Storing_Application_State_Part_2_Add_Page_Day_4_Part_15_subtitle.wmv
(16)存储应用程序状态第 3 部分 - ViewEdit 页面
http://download.microsoft.com/download/7/1/0/710733A5-5BE6-436E-AC7D-A265170CBB4B/Storing_Application_State_Part_3_ViewEdit_Page_Day_4_Part_16_subtitle.wmv
(17)调试空白文件名问题
http://download.microsoft.com/download/A/5/D/A5DFF34A-1A67-41C9-98C8-CB59B178FCBE/Debugging_the_Empty_FileName_Issue_Day_4_Part_17_subtitle.wmv
(18)代码清理、异常处理和市场准备
http://download.microsoft.com/download/2/0/D/20D5F15E-BA30-4E9F-8C85-25C497CF15AB/Code_Cleanup_Exception_Handling_and_Preparing_for_the_Marketplace_Day_4_Part_18_subtitle.wmv
(19)相关内容
http://download.microsoft.com/download/1/7/E/17E7DF26-CA03-45C5-AA47-D73469ED034A/Where_To_Go_From_Here_subtitle.wmv
第一部分跟第二部分比较弱,就直接无视了。。
其实说出来就不值钱了,你先把自己原来的那个文件夹改为DropBox1,然后在dropbox的windows端设置为原来的dropbox路径,他会自动将默认的文件move过去,然后退出dropbox,只要删除move过去的那个文件夹,重新把DropBox1文件夹的名称改为DropBox,就可以了,原来有的文件他会去匹配,一般应该是最新的,别看他在index,很快就完事了。。
有几种方法可行
1.设置个全局变量,所有都往里面写,然后需要删除被锁文件的时候dispose
2.使用stream,如下
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Text;
5 using System.Drawing;
6 using System.IO;
7 using System.Diagnostics;
8 using System.Threading;
9
10 namespace ConsoleApplication2
11 {
12 class Program
13 {
14 static void Main(string[] args)
15 {
16 Console.ReadKey();
17 for (int i = 0; i < 10000;i++ )
18 {
19 FileStream fs = new FileStream(@"E:\大图片\me.jpg", FileMode.Open);
20 Image image = Image.FromStream(fs);
21 fs.Close();
22 Thread.Sleep(50);
23 }
24 }
25 }
26 }
经测试,Image对象会被GC自动回收,做法跟效率都比第一种方法要好上很多,建议采用第二种方法去解决锁文件的问题
参考:http://www.txrjy.com/archiver/?tid-565005.html
以下是摘录上面网址的一些内容:
第一步:这个要怪华为,为什么人家的东东可以直接进门的,你的东东偏偏要拐个弯弯!首先你要在本地连接中指定IP,IP地址:192.168.100.2(从192.168.100.2-192.168.100.254都可以),子网掩码自动会生成:255.255.255.0,默认网关:192.168.100.1(这个是华为HG8240的默认地址)。下面的DNS服务器地址都不需要填写,空着好了。
第二步:登录HG8240,即在地址栏输入//192.168.100.1,回车!用户名为telecomadmin,密码是admintelecom,选中文。再次恶心一下华为:用户名和密码都不能改!太长太臭!
第三步:设置HG8240。在主页的左边有树状列表。选第三项LAN-->LAN口工作模式,把右边的LAN1,LAN2,LAN3都勾上。为何不勾LAN4?这个端口是老夫专门接IPTV网线的,勾上就不能看电视了!什么,你没有开通IPTV?那就勾上啊,多一个端口上网多一个兄弟!点击“应用”。
第四步:选树状列表的第二项WAN,点下面的WAN配置。看到右边了吗,那是电信工作人员给你配置好的东东,不用看了,因为接下来你马上就要删除他!在连接名前面那个空白的复选框上点出勾勾来,然后右上角有个灰灰的“删除”看到没,不要我说了吧。。。
第五步:删了原来的配置就要新建一个啊!新建按键在哪里???晕!
WAN连接:使能前面的复选框勾上,听我的,如果你真的想上网的话。
服务列表:选“INTERNET”
连接方式:路由
VLAN ID:1(外地朋友可能不是这个数值)
802.1p:7(如果你觉得光纤网速快的蛋疼,可以选0)
获取IP方式:PPPoE
NAT:使能复选框勾上
用户名:你不知道? 密码:你也不知道?问电信, 别问我!
绑定项:LAN1-LAN3都勾上,怎么LAN4勾不上?你是不是第三步就没点人家呀!
点击应用。
第六步:保存设置。什么,你已经点应用了。。。孩子,相信我!华为真的把俺们菜鸟忽悠的不浅!
选左边树状列表“系统工具”---》配置文件,右边第一个:保存配置。
第七步:把本地连接刚才设置的东东全部恢复为自动获取。
我一直不理解的是为什么要保存设置才有用。另外,看了网上一些别的文章,不太理解的是为什么要把WAN设备里面的内容全部删光,我觉得是不可取的,也不会连的上

图中,我圈出来的应该是猫的自己的设置。。必须保留,删除必定上不去网。自己在下面加一条internet就可以了。
在更改配置之前,记得保存原始XML配置文件,不然保存之后回不去就蛋疼了
1 HttpWebRequest myRequest = null;
2 HttpWebResponse myResponse = null;
3 Stream reqStream = null;
4 Stream resStream = null;
5
6 try
7 {
8 byte[] data = System.Text.Encoding.Default.GetBytes(param);
9
10 myRequest = (HttpWebRequest)WebRequest.Create(url);
11 myRequest.Method = "POST";
12 myRequest.KeepAlive = true;
13 myRequest.ContentType = "application/octet-stream";
14 myRequest.ContentLength = data.Length;
15 reqStream = myRequest.GetRequestStream();
16 reqStream.Write(data, 0, data.Length);
17 reqStream.Close();
18
19 myResponse = (HttpWebResponse)myRequest.GetResponse();
20 resStream = myResponse.GetResponseStream();
21 data = new byte[512];
22 int count = 0;
23 UIFactory.zZRK_MODIForm.memStream = new MemoryStream();
24 while ((count = resStream.Read(data, 0, data.Length)) > 0)
25 {
26 UIFactory.zZRK_MODIForm.memStream.Write(data, 0, count);
27 }
28 resStream.Close();
29
30 }
31 catch
32 {
33 }
34 finally
35 {
36 if (resStream != null)
37 {
38 resStream.Close();
39 }
40 if (reqStream != null)
41 {
42 reqStream.Close();
43 }
44 if (myResponse != null)
45 {
46 myResponse.Close();
47 }
48 }
大家看下这段程序,有问题吗?乍一看,好像没有什么问题,所有的流都释放了,Response也释放了。。不过如果你写个循环无限次发起请求,你会发现,运行不了几次就阻塞了。为什么呢?大家看下面的代码
1 HttpWebRequest myRequest = null;
2 HttpWebResponse myResponse = null;
3 Stream reqStream = null;
4 Stream resStream = null;
5
6 try
7 {
8 byte[] data = System.Text.Encoding.Default.GetBytes(param);
9
10 //想服务器端发送请求,获取照片信息
11 myRequest = (HttpWebRequest)WebRequest.Create(url);
12 myRequest.Method = "POST";
13 myRequest.KeepAlive = true;
14 myRequest.ContentType = "application/octet-stream";
15 myRequest.ContentLength = data.Length;
16 reqStream = myRequest.GetRequestStream();
17 reqStream.Write(data, 0, data.Length);
18 reqStream.Close();
19
20 myResponse = (HttpWebResponse)myRequest.GetResponse();
21 resStream = myResponse.GetResponseStream();
22 data = new byte[512];
23 int count = 0;
24 UIFactory.zZRK_MODIForm.memStream = new MemoryStream();
25 while ((count = resStream.Read(data, 0, data.Length)) > 0)
26 {
27 UIFactory.zZRK_MODIForm.memStream.Write(data, 0, count);
28 }
29 resStream.Close();
30
31 }
32 catch
33 {
34 }
35 finally
36 {
37 if (resStream != null)
38 {
39 resStream.Close();
40 }
41 if (reqStream != null)
42 {
43 reqStream.Close();
44 }
45 if (myResponse != null)
46 {
47 myResponse.Close();
48 }
49 if (myRequest != null)
50 {
51 myRequest.Abort();
52 }
53 }
多了些什么?多了这个
1 if (myRequest != null)
2 {
3 myRequest.Abort();
4 }
5
其实很多时候释放了Stream和Response还不够,客户端的Request还是在保持着,需要等垃圾回收器来回收,所以一般很容易阻塞,导致请求发送不出去。加上这个就是让HttpWebRequest实例在不需要的时候及时释放资源。这样可以重复使用而不会阻塞。
感谢:
http://www.blogjava.net/TiGERTiAN/archive/2010/06/11/227708.html
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;
namespace WindowsFormsApplication28
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
protected override void WndProc(ref Message m)
{
const int WM_CHAR = 0x0102;
const int WM_USER = 0x0400;
const int WM_USER1 = WM_USER + 1;
switch (m.Msg)
{
case WM_USER1:
textBox1.Focus();
IntPtr hwnd = textBox1.Handle;
WinAPI.SendMessage(hwnd, WM_CHAR, (int)m.WParam, 0);
break;
}
base.WndProc(ref m);
}
}
class MyTextBox : TextBox
{
protected override void WndProc(ref Message m)
{
const int WM_CHAR = 0x0102;
const int WM_PAINT = 0x000F;
const int WM_USER = 0x0400;
const int WM_KEYDOWN= 0x0100;
const int WM_IME_CHAR = 0x0286;
const int WM_IME_COMPOSITION = 0x010F;
switch (m.Msg)
{
case WM_CHAR:
{
int key = (int)m.WParam;
IntPtr hwnd = WinAPI.FindWindow("WindowsForms10.Window.8.app.0.2bf8098_r13_ad1", null);
WinAPI.SendMessage(hwnd, WM_USER + 1, (int)m.WParam, 0);
}
return;
//case WM_IME_CHAR:
// MessageBox.Show("a");
// break;
//case WM_KEYDOWN:
// {
// IntPtr hwnd = WinAPI.FindWindow("WindowsForms10.Window.8.app.0.2bf8098_r13_ad1", null);
// int code = (int)m.WParam;
// WinAPI.SendMessage(hwnd, WM_USER + 1, code, 0);
// }
// return;
case WM_IME_COMPOSITION:
{
IntPtr hwnd = WinAPI.FindWindow("WindowsForms10.Window.8.app.0.2bf8098_r13_ad1", null);
int code = (int)m.WParam;
WinAPI.SendMessage(hwnd, WM_USER + 1, code, 0);
}
return;
//case WM_PAINT:
////MessageBox.Show("aa");
// break;
}
base.WndProc(ref m);
}
}
}
记录下,备忘~
就是要把上面那个textbox的WndProc重写下,然后消息拦截下就ok了。。
找了很多,找了很久。。纠结了很久。。终于找到了方法。。
因为是windows集成身份验证,所以方法如下:
1 HttpWebRequest wq = (HttpWebRequest)WebRequest.Create("http://192.168.0.1");
2
3 wq.Credentials = new System.Net.NetworkCredential("admin", "admin");
4
5 try
6
7 {
8
9 HttpWebResponse wr = (HttpWebResponse)wq.GetResponse();
10
11 if (wr != null)
12
13 Console.WriteLine("成功");
14
15 else
16
17 Console.WriteLine("失败");
18
19 wr.Close();
20
21 wq.Abort();
22
23 }
24
25 catch (Exception ex)
26
27 {
28
29 Console.WriteLine(ex.Message);
30
31 wq.Abort();
32
33 }
超简单。。
前几天改了个来电通二次开发,开发的时候发现了一些问题,发现来电通调用的时候,具体内部可能是里面应该有个队列,然后全部出队,来电或者去电拨号的时候,全部出队,队列出队的时候,应该调用那个获取电话号码的函数,否则,队列就会一直排队下去,当你调用获取电话号码的那个函数的时候,会一次性全部出队,然后就可能导致多个电话号码都获取到的问题,然后你显示就有问题了。我的做法是在每次回调的时候,先获取一下电话号码,这样可以把那些去电的时候拨的可能显示的乱七八糟的电话号码都过滤掉,然后再判断是否振铃,最后调用我想干的那些方法。

