Time of Update: 2017-01-18
1、什麼是非同步?非同步作業通常用於執行完成時間可能較長的任務,如開啟大檔案、串連遠端電腦或查詢資料庫。非同步作業在主應用程式線程以外的線程中執行。應用程式調用方法非同步執行某個操作時,應用程式可在非同步方法呼叫執行其任務時繼續執行。2、同步與非同步區別同步(Synchronous):在執行某個操作時,應用程式必須等待該操作執行完成後才能繼續執行。非同步(Asynchronous):在執行某個操作時,應用程式可在非同步作業執行時繼續執行。實質:非同步作業,啟動了新的線程,主線程與方法線程並存執行
Time of Update: 2017-01-18
交易處理基本原理
Time of Update: 2017-01-18
其實這個比較簡單,子線程怎麼通知主線程,就是讓子線程做完了自己的事兒就去幹主線程的轉回去幹主線程的事兒。那麼怎麼讓子線程去做主線程的事兒呢,我們只需要把主線程的方法傳遞給子線程就行了,那麼傳遞方法就很簡單了委託傳值嘛;下面有一個例子,子線程幹一件事情,做完了通知主線程public class Program { //定義一個為委託 public delegate void Entrust(string str); static void Main(string[] args)
Time of Update: 2017-01-18
用C#如何產生二維碼,我們可以通過現有的第三方dll直接來實現,下面列出幾種不同的產生方法:1.通過QrCodeNet(Gma.QrCodeNet.Encoding.dll)來實現1.1):首先通過VS2015的NuGet下載對應的第三方組件,如下圖所示:1.2):具體產生二維碼方法如下 private void GenerateQRByQrCodeNet() { QrEncoder qrEncoder = new
Time of Update: 2017-01-18
在C#中數組,ArrayList,List都能夠儲存一組對象,那麼這三者到底有什麼樣的區別呢。數組數組在C#中最早出現的。在記憶體中是連續儲存的,所以它的索引速度非常快,而且賦值與修改元素也很簡單。//數組 string[] s=new string[2]; //賦值 s[0]="a"; s[1]="b"; //修改 s[1]="a1";
Time of Update: 2017-01-18
這個例子只是簡單實現了如何使用 Socket 類實現連線導向的通訊。注意:此例子的目的只是為了說明用通訊端寫程式的大概思路,而不是實際項目中的使用程式。在這個例子中,實際上還有很多問題沒有解決,如訊息邊界問題、連接埠號碼是否被佔用、訊息命令的解析問題等。。下面是兩個程式的代碼,(兩個程式均為控制台程式)先發服務端的(Server)完整代碼如下:引入命名空間:using System.Net.Sockets; using SystemNet; using SystemThreading;
Time of Update: 2017-01-18
一般認為:foreach (object obj in checkedListBox1.SelectedItems)即可遍曆選中的值。其實這裡遍曆的只是高亮的值並不是打勾的值。遍曆打勾的值要用下面的代碼:for (int i = 0; i < checkedListBox1.Items.Count; i++){ if (checkedListBox1.GetItemChecked(i)) { MessageBox.Show(checkedListBox1.GetItemText(
Time of Update: 2017-01-18
.Net編程中最經常用的元素,事件必然是其中之一。無論在ASP.NET還是WINFrom開發中,表單載入(Load),繪製(Paint),初始化(Init)等等。“protected void Page_Load(object sender, EventArgs e)”這段代碼相信沒有人不熟悉的。細心一點一定會發現,非常多的事件方法都是帶了“object sender, EventArgs
Time of Update: 2017-01-18
最近學習了 C#實現檔案上傳與下載,現在分享給大家。1、C#檔案上傳建立MyUpload.htm頁面,用於測試<form name="form1" method="post" action="UploadFile.aspx" id="form1" enctype="multipart/form-data"> <input type="file" id="txtFile" name="picfile" /></br> <input
Time of Update: 2017-01-18
.NET將關於多線程的功能定義在System.Threading名字空間中。因此,要使用多線程,必須先聲明引用此名字空間(using System.Threading;)。a.啟動線程顧名思義,“啟動線程”就是建立並啟動一個線程的意思,如下代碼可實現:Thread thread1 = new Thread(new ThreadStart( Count));其中的 Count
Time of Update: 2017-01-18
本文執行個體為大家分享了C# this關鍵字的四種用法,供大家參考,具體內容如下用法一 this代表當前執行個體,用this.顯式調用一個類的方法和成員namespace Demo{ public class Test { private string scope = "全域變數"; public string getResult() { string scope = "局部變數"; //
Time of Update: 2017-01-18
c#
Time of Update: 2017-01-18
前言通常在DAL層我們都需要把DataTable轉換為List<T>讓調用者儘可能的好用,盡量的不用關心資料庫的欄位等,所以我們一般傳過去的都是List<T>而不是DataTable。泛型的好處:
Time of Update: 2017-01-18
什麼是JSON?JSON (JavaScript Object Notation) is a lightweight data-interchange format. It is easy for humans to read and write and easy for machines to parse and generate. JSON is a text format that is completely language
Time of Update: 2017-01-18
如下所示:<?xml version="1.0" encoding="utf-8" ?><configuration> <appSettings> <add key="ServerIP" value="127.0.0.1"></add> <add key="DataBase" value="WarehouseDB"></add> <add key="user"
Time of Update: 2017-01-18
執行個體如下:public class ConfigOperator { #region 從設定檔擷取Value /// <summary> /// 從設定檔擷取Value /// </summary> /// <param name="key">設定檔中key字串</param> /// <returns></returns> public static string
Time of Update: 2017-01-18
網站IP訪問頻率限制 針對單個網站using System;using System.Collections.Generic;using System.IO;//using System.Linq;using System.Web;// <summary>// IP訪問頻率控制// </summary> public static class IPCacheManager{ /// <summary> /// IP緩衝集合 /// <
Time of Update: 2017-01-18
定義一個靜態類,類中定義靜態方法,方法中參數類型前邊加上this修飾符,即可實現對參數類型的方法擴充樣本如namespace Demo{// 這裡的類必須為靜態類public static class Json{ // 方法為靜態方法 // this修飾符後邊是string類型,即為string類型擴充出了ToJson方法public static object ToJson(this string Json){return Json == null ? null :
Time of Update: 2017-01-18
什麼是原子操作?原子(atom)本意是“不能被進一步分割的最小粒子”,而原子操作(atomic operation)意為”不可被中斷的一個或一系列操作” 。在C#中有多個線程同時對某個變數進行操作的時候,我們應該使用原子操作,防止多線程取到的值不是最新的值。例如:int result = 0;多線程A正在執行 result(0)+1多線程B同時執行
Time of Update: 2017-01-18
本文導讀:C#中Equals , == , ReferenceEquals都可以用於判斷兩個對象的個體是不是相等,對於相同的基本實值型別,==和Equals()比較結果是一樣的;由於ReferenceEquals()是判斷兩個對象的引用是否相等,對於實值型別,因為每次判斷前都必須進行裝箱操作,也就是每次都產生了一個臨時的object,因而永遠返回false。一、==