2012年5月7日 星期一

Q: How to implement Multi-threading?
A: 
1. Simple

Module Module1

    Sub Main()
        For i As Integer = 1 To 10
            ' create a thread and run
            Dim obj As New Threading.Thread(AddressOf ThreadMethod)
            obj.Start()
        Next
        Console.ReadLine()
    End Sub

    ' the running method in every thread
    Sub ThreadMethod()
        Console.WriteLine(Now)
    End Sub
End Module
2. With Parameters : add Sub() before the method in Thread object initialization
Dim obj As New Thread(Sub() SaveImage(url, mFileName))
obj.Start()

...

    Public Sub SaveImage(url As String, mFileName As String)
        'Public Sub SaveImage()
        'Dim url As String, mFileName As String
        Dim objWebClient As New WebClient

        objWebClient.DownloadFile(url, mFileName)
        Console.WriteLine(url)
    End Sub

2012年4月15日 星期日

ASP.net Menu 在 IE9、Google Chrome、FireFox 內執行出現空白

Q: ASP.net Menu 在 IE9、Google Chrome、FireFox 內執行,下拉式選單出現空白
A: 在母版網頁的內加一行如下:




or


2011年12月26日 星期一

XML 解析

Q: 讀入一個字串,如何取出節點的值?
A:
Dim xmltext As New System.Text.StringBuilder
Dim strReader As StringReader = New StringReader(mXml)
Dim reader As XmlTextReader = New XmlTextReader(strReader)
Dim docNav As New XPathDocument(reader)
Dim objxPath As XPathNavigator = docNav.CreateNavigator
Dim objNode As XPathNavigator = objxPath.SelectSingleNode("/")
Return objNode.Value

2011年6月13日 星期一

DataSet Tips

DataSet 是一個儲存在記憶體內的資料庫,它擁有很多類似資料庫的操作功能,例如:

1. 兩表合併(Merge Table)
Table1.Merge(Table2, False)
有時候,這個方法會因為資料結構造成失敗,此時可改用DataRelation,將兩個Table Join。
Dim mDataRelation As New DataRelation("TempJoin", Table2Columns, Table1Columns, False)
ds.Relations.Add(mDataRelation)
' jj 是Table2填入Table1的起始欄位
For Each mRow As DataRow In Table1.Rows
For ii = jj To Table2.Columns.Count - 1
mRow(jj+ii) = mRow.GetParentRow("TempJoin")(ii)
Next
Next

2. 排序(Sort)
Table1.DefaultView.Sort(Field1)
For i = 0 To Table1.DefaultView.Count - 1
aa=Table1.DefaultView(i).Item("Field2")
next

3. 篩選(Filter)
Dim rows As DataRow() = dtTopicid.Select("Field1='aaa'")

4. 衍生欄位(Derived Field)
Dim col As DataColumn
col = dt.Columns.Add("ExpCol", GetType(Boolean), expr)



另外,還有一些小技巧,與大家分享:
1. 欄位值大小寫有區別(Case Sensitive)
Table1.CaseSensitive = True

2. 設定額外屬性(Custom Property)
column.ExtendedProperties.Add("TimeStamp", DateTime.Now)

3. 取唯一值(Unique Values)
Dim dtDistinct As DataTable = Table1.DefaultView.ToTable("Table1", True, "Field1")

2011年4月13日 星期三

以內碼設定字串值

Q:如何列印所有的中文字或全行字?

A:
For i As Integer = 0 To 20901
sb.Append(ChrW(&H4E00 + i))
Next
** Console mode 無法顯示部份字元,例如ㄎ,應該是DOS Mode的中文字集不足的問題。

2011年1月25日 星期二

VS 安裝專案的注意事項

產生安裝專案時有兩件事,設定常常找不到:

  1. 要在桌面產生一個捷徑
  2. 要使用.net framework 2.0

在桌面產生一個捷徑

不能在【使用者的桌面】按滑鼠右鍵增加一捷徑,這樣會使捷徑指到執行檔所在目錄,而非執行檔本身;必須在【應用程式資料夾】的【主要輸出】按滑鼠右鍵增加一捷徑,再將該捷徑拖曳到【使用者的桌面】。

要使用.net framework 2.0

除了執行檔專案建置要設成.net framework 2.0外,在安裝專案的Mocrosoft .net Framework項目,須Double Click後,設定.net framework 2.0,如下圖。

1

2

2010年11月4日 星期四

在同一個目錄建立兩個 .net 專案


問題
通常寫一個Library後,為了測試並說明使用方法,通常會希望再開一個專案,如果將這個專案建在其他目錄,管理上並不方便,另外,有時候我們希望兩個專案共用一些表單,須要複製一份,對Source Code Control也不是很方便,所以基於上訴原因,我會希望在同一個目錄建立兩個專案。

解決方案
通常新增一個專案後,VS會在指定目錄下建立一個與專案名稱同名的子目錄,透過這種方式,我們就無法在同一個目錄建立兩個專案,必須採取另一個變通的方式,在英文版的VS2010可以點選 File>New>Project from existing code ,選擇目錄及指定專案名稱後,就可以在既有的目錄新增一個專案,之後再把第一個專案加入到方案即可。
但是中文版VS2008卻看不到這個選單,經過一番搜尋,原來是被隱藏了。解決方法就是點選 工具>自訂,在 【命令】頁籤下找到【檔案】類別中的【現有程式碼中的專案】,將它拖曳到選單中,就搞定了。

Keep Coding !!