.net
Farmwang
博采众长,兼收并蓄!
展开
-
APIJson
using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Cors; using QMLib.WebUtility; using System.IO; u.原创 2021-08-16 07:09:07 · 180 阅读 · 0 评论 -
Assembly.Load动态加载程序集而不占用文件
方式一:占用文件的加载Assemblyassembly=Assembly.Load(path);用上面的方法可以动态的加载到dll,但是用这种方法加载到的dll一直到程序运行结束都是占用的dll文件,在此期间不能够对dll文件进行升级,或者修改.方式二:不占用文件的方式Assemblyab=Assembly.Load(File.ReadAllBytes(path));首先把dll加载到内存中,然后在在加载成Assembly,这样的话,dll完全跟程序解耦了,只要加载完成,你...原创 2021-03-13 14:38:21 · 1965 阅读 · 1 评论 -
NetCore WebAPI Json
namespace QMTDCSWeb.API{ [Produces("application/json")] [Route("api/[controller]")] public class TestController : Controller { // POST api/<controller> ...原创 2019-10-22 22:47:22 · 543 阅读 · 0 评论 -
我理解c#中的interface abstract virtual override和new
interface用来声明接口1.只提供方法的规则约束,不提供方法的主体。例:public interface IPerson{void getName();//不包含主体方法}2.方法不能用public abstract等修饰,无字段变量,无构造函数。3.方法可包含参数如public interface IPerson{void getAge(st原创 2016-01-24 21:50:16 · 454 阅读 · 0 评论 -
多线程编程模式
多线程服务器的常用编程模型本文主要讲我个人在多线程开发方面的一些粗浅经验。总结了一两种常用的线程模型,归纳了进程间通讯与线程同步的最佳实践,以期用简单规范的方式开发多线程程序。文中的“多线程服务器”是指运行在 Linux 操作系统上的独占式网络应用程序。硬件平台为 Intel x64 系列的多核 CPU,单路或双路 SMP 服务器(每台机器一共拥有四个核或八个核,十几 GB 内存)转载 2016-01-27 22:09:25 · 2674 阅读 · 0 评论 -
在子线程(非UI线程)中修改一个控件的值
在子线程(非UI线程)中修改一个控件的值 您可能需要通过线程调用控件的方法或修改一个控件的值:比如修改进度条进度,时会抛出如下错误 Cross-thread operation not valid: Control 'XXX' accessed from a thread other than the thread it was created on. .N转载 2016-01-28 21:35:46 · 2009 阅读 · 0 评论 -
GetWindowThreadProcessId用法
函数功能:该函数返回创建指定窗口线程的标识和创建窗口的进程的标识符,后一项是可选的。 函数原型;DWORD GetWindowThreadProcessld(HWND hwnd,LPDWORD lpdwProcessld); 参数: hWnd:窗口句柄。 lpdwProcessld:接收进程标识的32位值的地址。如果这个参数不为NULL,转载 2016-01-28 21:39:18 · 6769 阅读 · 0 评论 -
FindWindowEx用法
函数功能:该函数获得一个窗口的句柄,该窗口的类名和窗口名与给定的字符串相匹配。这个函数查找子窗口,从排在给定的子窗口后面的下一个子窗口开始。在查找时不区分大小写。 函数原型:HWND FindWindowEx(HWND hwndParent,HWND hwndChildAfter,LPCTSTR lpszClass,LPCTSTR lpszWindow);转载 2016-01-28 21:43:01 · 1790 阅读 · 0 评论 -
windows常用API函数
windows常用API函数 http://www.vbgood.com/api.htmlhttp://hi.baidu.com/3582077/item/9cc3483b581f53c5392ffae3第一个:FindWindow根据窗口类名或窗口标题名来获得窗口的句柄,该函数返回窗口的句柄,这个函数的定义是这样的 HWND WINAPI FindWind转载 2016-01-28 22:38:18 · 22255 阅读 · 7 评论 -
.net如何获取当前的年月日
我们可以通过使用DataTime这个类来获取当前的时间。通过调用类中的各种方法我们可以获取不同的时间:如:日期(2008-09-04)、时间(12:12:12)、日期+时间(2008-09-04 12:11:10)等。//获取日期+时间DateTime.Now.ToString(); // 2008-9-4 20:02:10DateTime.Now.ToLoc转载 2016-02-14 23:11:29 · 21034 阅读 · 0 评论 -
excle .net
public static DataSet LoadDataFromExcel(string filePath) { try { string strConn; strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data S原创 2016-02-14 23:19:18 · 351 阅读 · 0 评论 -
C#对象结构
.ctor:类的构造函数,在类被实例化时,它会被自动调用。 class test { }类test中没有显示的构造函数,现在用ILDasm.exe打开编译后生成的exe文件,会看到:可以看到这里有个.ctor,我们没有定义构造函数,但这里却出现了.ctor,这就说明了:当没有显示定义构造函数时,会自动生成一个构造函数,它没有原创 2016-08-06 16:34:28 · 483 阅读 · 0 评论 -
线程安全性理解
以前常听高手告诫MFC对象不要跨线程使用,因为MFC不是线程安全的。比如CWnd对象不要跨线程使用,可以用窗口句柄(HWND)代替。CSocket/CAsyncSocket对象不要跨线程使用,用SOCKET句柄代替.那么到底什么是线程安全呢?什么时候需要考虑?如果程序涉及到多线程的话,就应该考虑线程安全问题。比如说设计的接口,将来需要在多线程环境中使用,或者需要跨线程使用某个对象时,这个就必须考虑转载 2016-01-27 22:03:13 · 529 阅读 · 0 评论 -
线程理解
进程是没有活力的,它只是一个静态的概念。为了让进程完成一些工作,进程必须至少占有一个线程,所以线程是描述进程内的执行,正是线程负责执行包含在进程的地址空间中的代码。实际上,单个进程可以包含几个线程, 它们可以同时执行进程的地址空间中的代码。为了做到这一点,每个线程有自己的一组CPU寄存器和堆栈。 线程是进程内部的一个执行单元。系统创建好进程后,实际上就启动执行了该进程的主执行转载 2016-01-27 22:02:06 · 445 阅读 · 0 评论 -
线程(thread)
1 引言 线程(thread)技术早在60年代就被提出,但真正应用多线程到操作系统中去,是在80年代中期,solaris是这方面的佼佼者。传统的 Unix也支持线程的概念,但是在一个进程(process)中只允许有一个线程,这样多线程就意味着多进程。现在,多线程技术已经被许多操作系统所支持,包括Windows/NT,当然,也包括Linux。 为什么有了进程的概念后,还要再引入线程呢?使转载 2016-01-27 21:46:05 · 719 阅读 · 0 评论 -
C#利用反射,遍历获得一个类的所有属性名,以及该类的实例的所有属性的值
C#利用反射,遍历获得一个类的所有属性名,以及该类的实例的所有属性的值总结:对应某个类的实例化的对象tc, 遍历获取所有属性(子成员)的方法(采用反射):Type t = tc.GetType();//获得该类的Type //再用Type.GetProperties获得PropertyInfo[],然后就可以用foreach 遍历了foreach (PropertyInfo转载 2016-01-24 21:55:23 · 490 阅读 · 0 评论 -
Application.Run() form.show form.showdialog
Application.Run()是"Begins running a standard application message loop on the current thread, and makes the specified form visible." 用代码可以表示为:while(GetMessage(&msg)>0){TranslateMessage(&msg);Di转载 2016-01-25 19:42:36 · 355 阅读 · 0 评论 -
invoke begininvoke
windows程序设计是一种事件驱动方式的程序设计模式,主要是基于消息的.当用户在键盘上按下一个A字时,操作系统感应到这一个动作,并且知道是按下A键,但操作系统不作出反应只是把这一事件传给应用程序(如记事本),由应用程序去决定对这一个事件做出反应.那么操作系统是如何将这一事件传给应用程序的呢?是通过消息机制来实现的.操作系统将每个事件都包装成一个消息结构体MSG来传递给应用程序.在windows原创 2016-01-25 20:27:06 · 399 阅读 · 0 评论 -
muti_thread ui
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Runtime.InteropServices;using System.Threadi原创 2016-01-25 20:57:35 · 447 阅读 · 0 评论 -
细说UI线程和Windows消息队列
在Windows应用程序中,窗体是由一种称为“UI线程(User Interface Thread)”的特殊类型的线程创建的。 首先,UI线程是一种“线程”,所以它具有一个线程应该具有的所有特征,比如有一个线程函数和一个线程ID。 其次,“UI线程”又是“特殊”的,这是因为UI线程的线程函数中会创建一种特殊的对象——窗体,同时,还一并负责创建窗体上的各种控件。转载 2016-01-27 21:27:18 · 330 阅读 · 0 评论 -
windows 多线程 消息队列
Windows线程分为两种:Worker线程、GUI线程worker线程:是指完全不牵扯到图形用户界面(GUI),纯粹做运算的线程。GUI线程:负责建造窗口以及处理消息循环(拥有消息队列)。任何一个特定窗口的消息总是被产生这一窗口的线程抓到并处理(线程收到消息后派发给不同的窗口函数处理)。操作系统会监控计算机上的键盘和鼠标等输入设备,为每一个输入转载 2016-01-27 21:29:16 · 1549 阅读 · 0 评论 -
Windows 线程漫谈——界面线程和工作者线程
每个系统都有线程,而线程的最重要的作用就是并行处理,提高软件的并发率。针对界面来说,还能提高界面的响应力。 线程分为界面线程和工作者线程,界面实际就是一个线程画出来的东西,这个线程维护一个“消息队列”,“消息队列”也是界面线程和工作者线程的最大区别,这个词应该进到你的脑子里,根深蒂固的!如果在界面线程的某个地方停住,这说明它处理不了窗口消息了,所以有时候我们就会看到整个界面无响应了转载 2016-01-27 21:31:51 · 481 阅读 · 0 评论 -
PostThreadMessage
把window线程间传送消息仔细的看了一遍,觉得以前的理解很不深刻。说一说对PostThreadMessage的理解。PostThreadMessage是一个线程体发送一个消息到指定的线程ID,其原型如下:BOOL PostThreadMessage( ); 这个转载 2016-01-27 21:32:59 · 725 阅读 · 0 评论 -
Windows多线程编程总结
1 内核对象1 .1 内核对象的概念内核对象是内核分配的一个内存块,这种内存块是一个数据结构,表示内核对象的各种特征。并且只能由内核来访问。应用程序若需要访问内核对象,需要通过操作系统提供的函数来进行,不能直接访问内核对象( Windows 从安全性方面来考虑的)。内核对象通过 Create* 来创建,返回一个用于标识内核对象的句柄,这些句柄 (而不是内核对象)可在创建进程范围内使用,转载 2016-01-27 21:34:20 · 358 阅读 · 0 评论 -
同步函数与异步函数
文章出处:http://blog.163.com/lyzaily@126/blog/static/42438837200952751954922/ 1. 同步函数与异步函数 什么是同步函数? 什么是异步函数? 它们在线程中执行时会对线程有何影响? 一个线程如何与一个异步执行的函数进行同步?依据微软的MSDN上的解说转载 2016-08-25 19:36:07 · 554 阅读 · 0 评论 -
多线程和异步操作
多线程和异步操作两者都可以达到避免调用线程阻塞的目的,从而提高软件的可响应性。甚至有些时候我们就认为多线程和异步操作是等同的概念。但是,多线程和异步操作还是有一些区别的。而这些区别造成了使用多线程和异步操作的时机的区别。异步操作的本质所有的程序最终都会由计算机硬件来执行,所以为了更好的理解异步操作的本质,我们有必要了解一下它的硬件基础。熟悉电脑硬件的朋友肯定对DMA 这个词不陌生,转载 2017-01-18 20:40:53 · 977 阅读 · 0 评论 -
c# 知识点
GridView数据源可以有哪些? 1 数据集(包括DateSet,DataTable等) 2 集合(键值对,哈希表,字典,队列等) 4 viewstate(当前页面)Machine.Config和Web.Config是什么关系?Machine.Config包括Web.Config,包含和被包含的关系强类型DataSet定义时即将确定其数据类型,用强类型DataSet定义数据库的实体,在业转载 2017-01-10 22:52:28 · 375 阅读 · 0 评论 -
Windows 服务中正确使用 log4net
using System;using System.Collections.Generic;using System.Linq;using System.ServiceProcess;using System.Text;using System.Threading.Tasks;using System.Reflection;using System.IO;using log4net...原创 2018-06-13 11:30:39 · 2004 阅读 · 0 评论 -
未能加载文件或程序集“”或它的某一个依赖项
DLL Version 不对造成的;更新DLL版本即可原创 2018-07-01 09:58:10 · 1188 阅读 · 0 评论 -
Reference.svcmap: 未能加载文件或程序集“Microsoft.Diagnostics.Tracing.EventSource, Version=1.1.28.0, Culture=n
原创 2018-07-01 20:44:35 · 3400 阅读 · 0 评论 -
.net 委托 事件
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace ConsoleApp2{ class Program { static void Main(string[...转载 2018-07-17 15:07:37 · 320 阅读 · 0 评论 -
.net启动框架不对
原创 2019-01-03 10:45:21 · 170 阅读 · 0 评论 -
C# async await
1:主线程遇到 await/return 就返回2:主线程碰到await后会立刻返回,以非阻塞的形式执行后面的代码3:使用async修饰符可将方法、lambda 表达式或匿名方法指定为异步,在用async修饰符的表达式/方法的返回值必须是 void, Task或者Task<T>,T是返回值的类型。如果没有返回值则用Task/void。4:在Task对象前面用 awai...原创 2019-07-18 22:46:26 · 355 阅读 · 0 评论 -
反射一
public class T1 { public static void A() { Console.WriteLine("Test.Print"); } public static void B() { Console.WriteLine("Test.Pr...原创 2019-07-18 07:09:59 · 120 阅读 · 0 评论 -
在DataTable中更新、删除数据
/*在DataTable中选择记录*/ /* 向DataTable中插入记录如上,更新和删除如下: * ----但是在更新和删除前,首先要找出要更新和删除的记录。 * 一种方法是遍历DataRow,搜索想要的记录, * --〉然而更聪明的办法是使用DataTable.Select方法:table...转载 2019-08-23 19:47:10 · 3284 阅读 · 0 评论 -
NullReferenceException
原创 2019-10-06 21:47:21 · 350 阅读 · 0 评论 -
C#创建Windows服务
%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\installutil.exe C:\Users\gary\source\repos\S2\S2\bin\Debug\S2.exeNet Start S2sc config S2 start= autopause%SystemRoot%\Microsoft.NET\Framework...原创 2018-06-12 21:09:48 · 214 阅读 · 0 评论 -
error|500|回发或回调参数无效。
236|error|500|回发或回调参数无效。在配置中使用 <pages enableEventValidation="true"/> 或在页面中使用 <%@ Page EnableEventValidation="true" %> 启用了事件验证。出于安全目的,此功能验证回发或回调事件的参数是否来源于最初呈现这些事件的服务器控件。如果数据有效并且是预期的,则...原创 2018-02-25 13:23:54 · 273 阅读 · 0 评论 -
谈.Net委托与线程——创建无阻塞的异步调用
前言本文大部分内容来自于mikeperetz的Asynchronous Method Invocation及本人的一些个人体会所得,希望对你有所帮助。原英文文献可以在codeproject中搜索到。介绍这篇文章将介绍异步调用的实现机制及如何调用异步方法。大多数.NET开发者在经过delegate、Thread、AsynchronousInvocation之后,通常都会对转载 2017-01-18 21:03:26 · 417 阅读 · 0 评论 -
线程安全
线程安全就是多线程访问时,采用了加锁机制,当一个线程访问该类的某个数据时,进行保护,其他线程不能进行访问直到该线程读取完,其他线程才可使用。不会出现数据不一致或者数据污染。 线程不安全就是不提供数据访问保护,有可能出现多个线程先后更改数据造成所得到的数据是脏数据===========================================================转载 2017-04-21 09:23:47 · 232 阅读 · 0 评论