WinForm 进程、线程、TreeView递归加载、发送邮件--2016年12月13日
进程:一个程序就是一个进程,但是也有一个程序需要多个进程来支持的情况
进程要使用的类是:Process
它在命名空间:System.Diagnostics;
静态方法Start();
Process.Start("进程名称");
也可以实例化对象,来调用Start()普通方法,但调用普通方法之前需要给
StartInfo属性设置一个对象,来通知它要打开的是哪个进程
Process p = new Process();
ProcessStartInfo psi = new ProcessStartInfo("完整exe文件路径名");
p.StartInfo = psi;
p.Start();
线程:
一个进程就像是一个公司,默认只有一个老板
老板叫做 主线程
主线程一旦让它去执行一段需要时间的代码,那么就会出现程序假死,失去控制
原因是:线程同一时间只能做一件事,而主线程是操作窗体控制的,一旦被占用,那么窗体就没人控制了。
解决办法:
招一个员工帮老板干这个活
开启线程:
线程基本使用:
//创建一个线程对象,告诉它要执行的是哪一个方法 Thread th = new Thread(aaa); //准备好了,开始执行,不是立即开始,CPU决定什么时候开始 th.Start();
需要跨线程访问对象:
程序默认不允许跨线程访问对象,因为监控开着
需要关闭监控
在构造函数的构造方法下面写上:
Control.CheckForIllegalCrossThreadCalls = false;
需要传参的线程:
线程需要执行一个方法,而这个方法允许有一个参数,并且这个参数必须是object类型的
Start的时候可以传一个object
th.Start(sender);
程序退出立刻关闭所有线程:
线程默认开启为前台线程,程序必须将所有的前台线程执行完毕后才会真正退出程序
解决办法:将线程变为后台线程
th.IsBackground = true;
TreeView递归加载树形菜单
最好不要直接访问数据库进行加载,
方法有二:
一:查询全部数据存入List<>进行修改
二:查询全部数据存入DataSet进行修改
List<China> AllList = new List<China>();
public Form1()
{
InitializeComponent();
AllList = new ChinaData().Select();
TreeNode tn1 = new TreeNode("中国");
tn1.Tag = ";
NodesBind(tn1);
treeView1.Nodes.Add(tn1);
}
public void NodesBind(TreeNode tn)
{
//lambda 表达式
List<China> clist = AllList.Where(r => r.ParentAreaCode == tn.Tag.ToString()).ToList();
foreach (China c in clist)
{
TreeNode tnn = new TreeNode(c.AreaName);
tnn.Tag = c.AreaCode;
NodesBind(tnn);
tn.Nodes.Add(tnn);
}
}
方法一
发送邮件:
//设置要调用的发送邮件的服务器
SmtpClient smtp = new SmtpClient("smtp.sina.cn");
//创建发信人对象
MailAddress from = new MailAddress(textBox1.Text);
//创建收信人对象
MailAddress to = new MailAddress(textBox2.Text);
//要发送的邮件对象,包含4个内容需要填充
MailMessage mail = new MailMessage(from, to);
//设置邮件的标题
mail.Subject = textBox3.Text;
//设置邮件的主体正文内容
mail.Body = textBox4.Text;
//创建发件人身份验证凭证
NetworkCredential cred = new NetworkCredential(textBox1.Text, textBox5.Text);
//将凭证证书绑定到服务端对象上,一并发送出去
smtp.Credentials = cred;
//此服务器对象执行发送邮件功能
smtp.Send(mail);
简单的邮件发送DLL:Email.zip
WinForm 进程、线程、TreeView递归加载、发送邮件--2016年12月13日的更多相关文章
- winform进程、线程、TreeView递归加载
进程: 一般来说,一个程序就是一个进程,不过也有一个程序需要多个进程支持的情况. 进程所使用的类:Process 所需命名空间:System.Diagnostics; 可以通过进行来开启计算机上现有的 ...
- WinForm TreeView递归加载
这个其实通俗一点讲就是的树状分支图 首先利用递归添加数据 数据放入 treeView1.Nodes.Add() 中 public Form3() { InitializeComponent(); Tr ...
- treeview递归加载
实体类: using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ...
- 省市数据递归加载到TreeView
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...
- 将Xml文件递归加载到TreeView中
#region [通过XDocument的方式将Xml文件递归到TreeView控件中] //读取Xml文件(XDocument) //1.加载Xml文件 XDocument document=XD ...
- C# IO操作(五)文件的递归加载
本篇是一个案例,其核心通过代码展示代码中的递归这个用法,程序的界面如下:
- (BUG已修改,最优化)安卓ListView异步加载网络图片与缓存软引用图片,线程池,只加载当前屏之说明
原文:http://blog.csdn.net/java_jh/article/details/20068915 迟点出更新的.这个还有BUG.因为软引应不给力了.2.3之后 前几天的原文有一个线程管 ...
- 递归加载Treeview
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using Sy ...
- WinForm中使用BackgroundWorker异步加载数据并使用进度条
在WinForm程序中,有时会因为加载大量数据导致UI界面假死,这种情况对于用户来说是非常不友好的.因此,在加载大量数据的情况下,首先应该将数据加载放在另一线程中进行,这样保证了UI界面的响应:其次可 ...
随机推荐
- ElasticSearch第三步-中文分词
ElasticSearch系列学习 ElasticSearch第一步-环境配置 ElasticSearch第二步-CRUD之Sense ElasticSearch第三步-中文分词 ElasticS ...
- IT培训行业揭秘(四)
IT培训班的老师前面已经说过,很多都是从一线程序员岗位转过来的,因为培训行业的收入整体上来看还是比作普通程序员要高一些,这是市场的普遍行情.还有一部分老师从培训班学习过并且留到培训班任教的.一般这种老 ...
- xml
//写入XML文件 public static void SavetoXml(List<ProxyEntity> proxys) { string path = Path.Combine( ...
- 几个MQTT的知识点
开始正文前需要感谢一下网友“小龙”和emqtt.io群里的网友们的帮助,本人刚刚开始使用MQTT有很多不懂的地方,在emqtt.io群里询问解决方法的时候,“小龙”给我详细的讲解了一些MQTT的知识点 ...
- 人脸识别引擎SeetaFace编译 ubuntu
00.SeetaFace简介 SeetaFace Engine is an open source C++ face recognition engine, which can run on CPU ...
- 把 SQL Server 迁移到 Linux?不如换成 MySQL
最近几年,数量庞大的个人和组织放弃 Windows 平台选择 Linux 平台,而且随着人们体验到更多 Linux 的发展,这个数字将会继续增长.在很长的一段时间内, Linux 是网络服务器的领导者 ...
- 14 Iterator和for...of循环
Iterator和for...of循环 首先 Iterator 是一个接口. 标准是 function makeIterator(array) { var nextIndex = 0; return ...
- iOS之UIKit系列教程<一>
前言:博主接触iOS的编程也有一段时间,今天把有关UI控件的一些知识在这里做一些总结. 申明:此系列文章都是使用目前最新版本swift3.0.1进行讲解的,与其他版本可能略有差异. 一,UIKit之设 ...
- 搭建NFS服务器
1:yum install -y nfs-utils-* portmap-* 2:NFS安装完毕,需要创建共享目录,共享目录在vi /etc/exports文件里面配置,可配置参数如下: /data/ ...
- Mac 配置 php-fpm 时出现'/private/etc/php-fpm.conf': No such file or directory (2)
https://github.com/musicode/test/issues/5 Mac 自带 php-fpm,在终端执行 php-fpm,会报如下错误: ERROR: failed to open ...