原创 【C#】40. 線程參數傳遞的三種方法

本文主要介紹三種向線程傳遞參數的方法,使用的例子依然是《C#多線程編程實例》。 這三種方法分別是:1、寫一個類型,在構造函數中傳參,而後在類型中寫無參數函數,裏面使用內部變量,從而達到傳參的目的。2、使用lambda方法,通過直接調用已有

原创 【C#】32. 使用EF(EntityFramework)連接Mysql,MVC開發

距離上一次寫博客已經過去了很久。。。。 這次主要來說說MVC開發,主要是講Mysql如何與EF進行銜接,製作數據庫網頁顯示的。 我使的數據庫是用的Mysql 5.5,裏面是一些期貨合約的數據。我的想法是將這些數據以網頁的形式呈現出來,這樣

原创 C# SSIS包開發中遇到的無法找到Microsoft.SqlServer.DTSRuntimeWrap.dll問題

最近一直在搞SQLSERVER SSIS 2008包提取和解析方面的工作,在從Sqlserver下載IS包功能開發中,發現了一個問題:無法找到Microsoft.SqlServer.DTSRuntimeWrap.dll或者他的依賴項。 搗

原创 【C#】38. 線程的等待方法:join

其實多線程最複雜的地方在於不同線程間的同步問題,這其中會涉及到先後執行問題、共享變量問題等。這篇文章我們主要來開個頭,看一下join方法。 using System; using System.Threading; namespace

原创 【C#】42. 在線程中使用Try Catch

本文主要說明:在線程函數中使用Try Catch能夠正確捕獲異常,而如果使用形如 try { var t = New Thread(XX); t.start(); } Catch{} 這種代碼是無法正確處理異常的。 using Syst

原创 C# UI與後臺線程死鎖問題

在項目開發中,往往會遇到線程死鎖問題。前幾天,我也遇到了一個類似的問題,在這裏與大家分享。 一、功能描述         原本程序只能自動刷新(其實就是每隔十秒鐘查詢訪問數據庫,得到數據),現在希望增加手動刷新共功能,保證用戶使用的方便性

原创 【C#】62. 異步讀寫文件的幾種方法: Task.Factory.FromAsync,WriteAsync

一、這裏主要說明2種異步寫入文件的方法: 1)異步編程模型API轉爲Task——使用Task.Factory.FromAsync方法 2)對於StreamWriter使用WriteAsync方法 請記得對stream對象使用FileOpt

原创 【C#】48. TaskScheduler

這篇其實很重要,講了如何在UI線程和線程池線程之間通訊。一般來說,UI線程擁有的對象,其他線程是無法操作的。但是.Net有一個很重要的抽象對象——TaskScheduler(任務調度器)。它協調着不同任務(線程)的運行,使得線程池中的線程

原创 【C#】59. AsParallel() 與 ForAll

平時經常會用到LINQ,這裏介紹的方法可以有效地使用並行查詢來加快查詢速度(AsParallel),同時通過使用ForAll來對結果進行並行處理。 GetTpyes:通過反射,從當前Assembllies中的所有組件中找出名稱以“Web

原创 【C#】53. Async void VS Task

本文主要說明與Task或者Task<T>相比,Async void爲什麼應該避免。 async static Task<string> GetInfoAsync(string name, int seconds) { await Tas

原创 【C#】63. 異步操作數據庫 localDB

這篇不難,都是些基礎性的異步操作,所以直接上代碼。 可以參考裏面的語法包括: 1)找到當前的bin文件夾: string outputFolder = Path.GetDirectoryName(Assembly.GetExecuting

原创 【C#】57. .Net中的併發集合——ConcurrentBag

這個是一個直接的爬蟲可伸縮應用,雖然大致看明白了,但是真的用到實際中,如何處理超時和網絡連接失敗呢? Crawling類型:用於標示需要爬取的網頁的URL,以及是由哪個爬蟲找到的。 class Crawling { public str

原创 【C#】61. 並行查詢的異常處理 PLINQ Exception

本文主要是要說明PLINQ中如果發生了異常(除取消任務以外的異常),那麼將會返回一個aggregateexception(因爲所有並行查詢中發生的異常都會被拋出),需要對其中的innerexception進行進一步處理。 首先來看普通L

原创 【C#】58. .Net中的併發集合——BlockingCollection

這篇是併發集合中的最後一篇,介紹一下BlockingCollection。在工作中我還沒有使用過,但是看上去應該是爲了便捷使用併發集合而創建的類型。默認情況下,BlockingCollection使用的是ConcurrentQueue容器

原创 Linux 2. 關於pthread_cond_signal 喚醒兩個線程的問題

這裏貼出一個非常經典的關於多線程條件變量互斥鎖的案例,即生產消費者模型。 我想說的是這裏的while循環判斷pthread_cond_wait,爲何不能使用if的問題。 根據man查詢到pthread_cond_signal這個函數至少會