C#异步执行带有返回值和参数的方法,且获取返回值
很多时候需要用到这些小知识点,做做笔记一起成长
下面是需要异步执行的方法
//获取所有的邮件
private List<EmailModel> GetEmailOnlyCount(POP3_ClientMessageCollection pOP3Collection)
{
int i = ;
List<EmailModel> list = new List<EmailModel>();
foreach (POP3_ClientMessage message in pOP3Collection)
{
byte[] bytes = System.Text.Encoding.Default.GetBytes(message.HeaderToString());
Mail_Message mail_Message = Mail_Message.ParseFromByte(bytes);
EmailModel emailModel = new EmailModel()
{
EmailFrom = mail_Message.From.ToString(),
EmailDate = mail_Message.Date.ToString(),
EmailSubject = mail_Message.Subject.ToString(),
};
list.Add(emailModel);
//异步线程中,改变主线程中的控件属于跨线程的调用,需要利用代理方法
textBox5.Invoke(showProcessDelegate, "已经读取" + (++i) + "/" + pOP3Collection.Count + "封邮件");
}
return list;
}
我们需要执行以上的方法,异步中执行由于带有参数,所以我们需要代理这个方法,用一个变量来代替这一个方法,并且声明异步方法执行结束的回调方法
private delegate List<EmailModel> GetMailDelegate(POP3_ClientMessageCollection pOP3_ClientMessage);
private GetMailDelegate getMailDelegate = new GetMailDelegate(GetEmailOnlyCount);
private AsyncCallback asyncCallback;//执行完的回调方法,异步方法执行完后执行的方法
接着我们在需要执行此方法的地方,开始异步执行此方法,当然是利用代理方法执行
getMailDelegate.BeginInvoke(pOP3_ClientMessageCollection, asyncCallback, null);
等异步方法执行完之后我们需要在回调方法之中结束异步操作所以我们需要在asynCallBack之中进行操作
这里我们就是获取异步执行的方法的返回值的地方
asyncCallback = delegate (IAsyncResult result)
{
EmaliList = getMailDelegate.EndInvoke(result);//关闭异步,并且获取到方法的返回值
for (int i = EmaliList.Count; i > ; i--)
{
ListViewItem listViewItem = new ListViewItem();
listViewItem.Text = EmaliList[i - ].EmailFrom;
listViewItem.SubItems.Add(EmaliList[i - ].EmailSubject);
listViewItem.SubItems.Add(EmaliList[i - ].EmailDate);
listViewItem.SubItems.Add(EmaliList[i - ].AttchmentsCount.ToString());
listView1.Invoke(showListViewDelegate, listViewItem);
} };
好了,这里我们的邮箱的异步读取邮件的操作就基本完成了=v=
C#异步执行带有返回值和参数的方法,且获取返回值的更多相关文章
- scala:函数作为值或参数进行传递、作为返回值进行返回
@ 目录 函数可以作为值进行传递 函数可以作为参数进行传递 函数可以作为返回值进行返回 什么是匿名函数 函数可以作为值进行传递 语法var f = 函数名 _ 如果明确了变量的数据类型,那么下划线可以 ...
- JSF页面中使用js函数回调后台bean方法并获取返回值的方法
由于primefaces在国内使用的并不是太多,因此,国内对jsf做系统.详细的介绍的资料很少,即使有一些资料,也仅仅是对国外资料的简单翻译或者是仅仅讲表面现象(皮毛而已),它们的语句甚至还是错误的, ...
- C#.NET为List加入扩展方法:获取唯一值
public static class ListTools { /// <summary> /// 获取唯一值列表 /// </summary> /// <param n ...
- 060、Java中定义有返回值有参数的方法
01.代码如下: package TIANPAN; /** * 此处为文档注释 * * @author 田攀 微信382477247 */ public class TestDemo { public ...
- 微信小程序前端调用后台方法并获取返回值
wxml代码 <wxs src="../../wxs/string.wxs" module="tools" /> <!-- 调用tools.i ...
- asp.net 调用post方法并获取返回值
/// <summary> /// http协议 post数据 接受返回结果 /// </summary> /// <param ...
- URL跨项目调用方法,获取返回的json值,并解析
package com.mshc.util; import java.io.BufferedReader; import java.io.IOException; import java.io.Inp ...
- 返回通知 对方法返回的结果可以进行加工 例如请求接口后 返回的json参数可以加工成对象返回给调用者
- Delphi通过管道执行外部命令行程序(cmd)并获取返回结果
该代码片段来自于: http://www.sharejs.com/codes/delphi/8999,发现好多代码,想用的时候找不到,记录一下备用 function RunDosCommand(Com ...
随机推荐
- 使用JMeter测试基于WebSocket协议的服务
使用JMeter测试基于WebSocket协议的服务 :first-child{margin-top:0!important}img.plugin{box-shadow:0 1px 3px rgba( ...
- Sobel算法
最近看了一些Sobel算法,并试了一下,源码如下: private void Sobel(Bitmap img) { int width = img.Width; int height = img.H ...
- iOS 查看代码总行数
1.打开终端 2.cd 拖入工程 回车 3.输入命令 find . "(" -name "*.m" -or -name "*.mm" -or ...
- 开启和查看mysql的bin-log日志
[root@VM_0_7_centos data]# vim /etc/my.cnf [root@VM_0_7_centos data]# vim /etc/my.cnf [root@VM_0_7_c ...
- sql 语句设置主键
创建表时候 SQL code? 1 2 3 4 CREATE TABLE tb ( id INT IDENTITY(1,1) PRIMARY KEY, ) 添加时候 SQL code? 1 2 ALT ...
- Qt 学习之路 2(45):模型
Home / Qt 学习之路 2 / Qt 学习之路 2(45):模型 Qt 学习之路 2(45):模型 豆子 2013年2月26日 Qt 学习之路 2 23条评论 在前面两章的基础之上,我们 ...
- Jmeter函数作用域实时取值覆盖[针对HTTP Request等控制器]
jmeter的属性和变量可以简单理解为编程里面的全局变量和局部变量.属性是全局可见,可以跨线程组传递调用,而变量基本上只能存在于一个线程组中(在测试计划定义的变量也是可以跨线程组传递的).同线程组内的 ...
- 15. window.onload和$(function() { } )的区别
window.onload和$(function() { } )的区别 1)执行时机不一样 $(function() { } )是在dom结构创建完成以后就执行,window.onload是在整个页面 ...
- 【转】intellij idea使用指南—— 导入Eclipse的Web项目
通常一个团队中可能有人用eclipse,有人用intelliJ,那么经常会出现需要导入别人用eclipse建好的web项目.而IntelliJ提供了多种项目类型的导入方式,其中就有eclipse. 在 ...
- bzoj3261: 最大异或和 (可持久化trie树)
题目链接 题解 看到异或和最大就应该想到01 trie树 我们记\(S_i\)为前i项的异或和 那么我们的目的是最大化\(S_n\)^\(x\)^\(S_{j-1}\) \((l <= j &l ...