<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>.NET(VB.NET)</title><link>http://blog.blueshop.com.tw/topcat/category/1732.aspx</link><description>VB.NET相關技術文章</description><managingEditor>topcat</managingEditor><dc:language>zh-TW</dc:language><generator>.Text Version 0.95.2004.101</generator><item><dc:creator>topcat</dc:creator><title>Dispose測試：Dispose時是否立即釋放記憶體</title><link>http://blog.blueshop.com.tw/topcat/archive/2008/07/07/55796.aspx</link><pubDate>Mon, 07 Jul 2008 08:45:00 GMT</pubDate><guid>http://blog.blueshop.com.tw/topcat/archive/2008/07/07/55796.aspx</guid><wfw:comment>http://blog.blueshop.com.tw/topcat/comments/55796.aspx</wfw:comment><comments>http://blog.blueshop.com.tw/topcat/archive/2008/07/07/55796.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blog.blueshop.com.tw/topcat/comments/commentRss/55796.aspx</wfw:commentRss><trackback:ping>http://blog.blueshop.com.tw/topcat/services/trackbacks/55796.aspx</trackback:ping><description>&lt;h1&gt;緣起：&lt;/h1&gt;&lt;p&gt;小喵寫這篇是源自於小喵上一篇文章【&lt;a href="http://www.dotblogs.com.tw/topcat/archive/2008/07/03/4427.aspx"&gt;物件Object的New,Dispose與Connection的Open,Close概念分享&lt;/a&gt;】，小喵最後描述【&lt;strong&gt;當物件Dispose的時候，並沒有把該段記憶體清空，只是標註，這段空間不再使用&lt;/strong&gt;，直到GC啟動把他清空才算真正的清空。】。但是小喵看一些網路文章時，有些卻提到當呼叫Dispose的時候，記憶體立即釋放。因此小喵就做這個測試來看看到底是怎麼回事。&lt;/p&gt;&lt;p&gt;測試計畫：&lt;/p&gt;&lt;p&gt;於是小喵寫了個小小的Console程式，然後裡面使用一個小類別，該類別在New的時候，讀取一個很大的文字檔，並且把文字檔的內容放到一個變數中。讓這個類別使用大量的記憶體。接著呼叫Dispose將物件釋放，最後呼叫GC.Collect強迫做資源回收。在這個過程中，小喵使用系統中的工具【效能】來監視這個程式的記憶體使用狀況，藉此來觀察Dispose時，是否立即釋放記憶體。&lt;/p&gt;&lt;h1&gt;程式準備：&lt;/h1&gt;&lt;p&gt;首先先寫個Console的程式，在專案中開啟一個【主控台應用程式&lt;a href="http://files.dotblogs.com.tw/topcat/0807/DisposeDispose_AE0D/xx2_2.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="22" alt="xx2" width="128" border="0" src="http://files.dotblogs.com.tw/topcat/0807/DisposeDispose_AE0D/xx2_thumb.jpg" /&gt;&lt;/a&gt; 】，然後在專案中新增一個類別，這個類別因為需要有Dispose的功能，因此小喵【Implements System.IDisposable】的介面，讓這個類別有可以進行Dispose，接著安排屬性，撰寫New時的讀取文字檔內容。相關程式如下：&lt;/p&gt;&lt;p&gt;Class:myTestObj&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class="wlWriterSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:579dcf02-9145-4c8a-a7bc-1a7bc29fe779" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre class="vb" name="code"&gt;
Imports System.IO

Public Class myTestObj
    Implements System.IDisposable

    Private m_TestStr As String

    Public Property TestStr() As String
        Get
            Return m_TestStr
        End Get
        Set(ByVal value As String)
            m_TestStr = value
        End Set
    End Property

    Public Sub New()

    End Sub
    Public Sub New(ByVal myFileName As String)
        m_TestStr = My.Computer.FileSystem.ReadAllText(myFileName)
    End Sub

    Private disposedValue As Boolean = False        ' 偵測多餘的呼叫

    ' IDisposable
    Protected Overridable Sub Dispose(ByVal disposing As Boolean)
        If Not Me.disposedValue Then
            If disposing Then
                ' TODO: 釋放其他狀態 (Managed 物件)。
                m_TestStr = &amp;quot;&amp;quot;
            End If

            ' TODO: 釋放您自己的狀態 (Unmanaged 物件)
            ' TODO: 將大型欄位設定為 null。
        End If
        Me.disposedValue = True
    End Sub

#Region &amp;quot; IDisposable Support &amp;quot;
    ' 由 Visual Basic 新增此程式碼以正確實作可處置的模式。
    Public Sub Dispose() Implements IDisposable.Dispose
        ' 請勿變更此程式碼。在以上的 Dispose 置入清除程式碼 (ByVal 視為布林值處置)。
        Dispose(True)
        GC.SuppressFinalize(Me)
    End Sub
#End Region

End Class
&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;接著在Console程式中，就使用該類別，之後Dispose接著呼叫GC.Collect做資源回收，程式如下：&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class="wlWriterSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:01b1bb89-a2ee-49e5-9ac0-99597195efc7" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre class="vb" name="code"&gt;
Module Module1
    Sub Main()
        Dim oTest As myTestObj
        Try
            oTest = New myTestObj(&amp;quot;xx.txt&amp;quot;)
        Catch ex As Exception

        Finally
            oTest.Dispose()
            GC.Collect()
        End Try
    End Sub
End Module
&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;剩下就是準備一個夠大的文字檔，讓記憶體的使用比較明顯，小喵準備一個23MB的文字檔&lt;/p&gt;&lt;p&gt;&lt;a href="http://files.dotblogs.com.tw/topcat/0807/DisposeDispose_AE0D/xx_2.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="25" alt="xx" width="510" border="0" src="http://files.dotblogs.com.tw/topcat/0807/DisposeDispose_AE0D/xx_thumb.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;接著就是測試的開始囉&lt;/p&gt;&lt;p&gt;先開啟【控制台】中的【系統管理工具】找到【可靠性和效能監視器】&lt;a href="http://files.dotblogs.com.tw/topcat/0807/DisposeDispose_AE0D/xx3_2.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="87" alt="xx3" width="75" border="0" src="http://files.dotblogs.com.tw/topcat/0807/DisposeDispose_AE0D/xx3_thumb.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;然後按下F11讓程式啟動，接著在校能監視器中，新增一個監視，選擇【Process】，接著選擇【PageFileBytes】，並選擇我們的Process【ConsoleApplication1.vshost】藉此觀察記憶體的使用狀況。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;h1&gt;測試結果：&lt;/h1&gt;&lt;p&gt;測試過程小喵錄製下來，請參考以下的錄影過程&lt;/p&gt;&lt;p&gt;&lt;a title="http://vip2.blueshop.com.tw/topcat/DEMO/Dispose_GC/Dispose_GC.html" target="_blank" href="http://vip2.blueshop.com.tw/topcat/DEMO/Dispose_GC/Dispose_GC.html"&gt;http://vip2.blueshop.com.tw/topcat/DEMO/Dispose_GC/Dispose_GC.html&lt;/a&gt;&lt;/p&gt;&lt;p&gt;相關的程式碼，您可以到按此下載&lt;/p&gt;&lt;p&gt;&lt;a title="http://vip2.blueshop.com.tw/topcat/DEMO/Dispose_GC/ConsoleApplication1.rar" target="_blank" href="http://vip2.blueshop.com.tw/topcat/DEMO/Dispose_GC/ConsoleApplication1.rar"&gt;http://vip2.blueshop.com.tw/topcat/DEMO/Dispose_GC/ConsoleApplication1.rar&lt;/a&gt;&lt;/p&gt;&lt;p&gt;從錄影的過程觀察到，當系統進行完Dispose之後，事實上記憶體並沒有立即釋放，而是直到呼叫了GC.collect之後才真正的釋放。&lt;/p&gt;&lt;p&gt;特別聲明：&lt;/p&gt;&lt;p&gt;GC.Collect方法是強制作業系統做資源回收的動作，不過&lt;font color="#ff0000"&gt;&lt;strong&gt;請您在寫程式的時候不要這麼做&lt;/strong&gt;&lt;/font&gt;，因為GC.Collect作用的區域並不只有你的程式部分，而是整個系統。並且這個動作是強制性的。再進行這個過程中，由於需要對全部的東西強制資源回收，所以&lt;strong&gt;該主機上其他的動作會等他做完之後再開始&lt;/strong&gt;。其實這個動作.NET Framework自己會依照系統的狀況自己處理。手動處理反而可能造成系統的負擔(想想馬路上隨時有救護車跑來跑去，頻率很高，大家都要停下來等他過)。因此寫程式時，只要使用Dispose讓系統標注這個記憶體可以被使用即可。有需要的時候讓系統自然啟動去清除。不要手動清除他。&lt;/p&gt;&lt;img src ="http://blog.blueshop.com.tw/topcat/aggbug/55796.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>topcat</dc:creator><title>物件Object的New,Dispose與Connection的Open,Close概念分享</title><link>http://blog.blueshop.com.tw/topcat/archive/2008/07/03/55733.aspx</link><pubDate>Thu, 03 Jul 2008 16:27:00 GMT</pubDate><guid>http://blog.blueshop.com.tw/topcat/archive/2008/07/03/55733.aspx</guid><wfw:comment>http://blog.blueshop.com.tw/topcat/comments/55733.aspx</wfw:comment><comments>http://blog.blueshop.com.tw/topcat/archive/2008/07/03/55733.aspx#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://blog.blueshop.com.tw/topcat/comments/commentRss/55733.aspx</wfw:commentRss><trackback:ping>http://blog.blueshop.com.tw/topcat/services/trackbacks/55733.aspx</trackback:ping><description>&lt;p&gt;這篇文章源自於有位網友對於Using的疑問(&lt;a title="http://www.blueshop.com.tw/board/show.asp?subcde=BRD20080703145519KXS&amp;amp;fumcde=FUM20041006161839LRJ" href="http://www.blueshop.com.tw/board/show.asp?subcde=BRD20080703145519KXS&amp;amp;fumcde=FUM20041006161839LRJ"&gt;http://www.blueshop.com.tw/board/show.asp?subcde=BRD20080703145519KXS&amp;amp;fumcde=FUM20041006161839LRJ&lt;/a&gt;)&lt;/p&gt;&lt;p&gt;小喵就小喵的認知來說明，不見得正確，如有錯誤請大家指正，感恩&lt;/p&gt;&lt;h1&gt;什麼是New&lt;/h1&gt;&lt;p&gt;我們經常可以看到有人使用一個物件的時候會寫&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class="wlWriterSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:6c28b5f7-ec51-41e2-91e6-5b1e05bd26da" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre class="vb" name="code"&gt;
Dim oEmp as ObjEmployee
oEmp = New ObjEmployee
&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;而且少了New就不能執行，那麼什麼是New呢 &lt;a href="http://files.dotblogs.com.tw/topcat/0807/ConnectionNewDisposeOpenClose_E240/%E5%97%AF_2.gif"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="54" alt="嗯" width="54" border="0" src="http://files.dotblogs.com.tw/topcat/0807/ConnectionNewDisposeOpenClose_E240/%E5%97%AF_thumb.gif" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;strong&gt;&lt;font color="#ff0000"&gt;New&lt;/font&gt;&lt;/strong&gt;是產生執行個體，不過相信很多人又要問，什麼是【&lt;strong&gt;&lt;font color="#0000ff"&gt;產生執行個體&lt;/font&gt;&lt;/strong&gt;】 (能不能講明白一點啊!!&lt;a href="http://files.dotblogs.com.tw/topcat/0807/ConnectionNewDisposeOpenClose_E240/%E7%81%AB%E5%A4%A7_2.gif"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="54" alt="火大" width="54" border="0" src="http://files.dotblogs.com.tw/topcat/0807/ConnectionNewDisposeOpenClose_E240/%E7%81%AB%E5%A4%A7_thumb.gif" /&gt;&lt;/a&gt; ) &lt;br /&gt;這要提到電腦的程式運作過程。程式在電腦上跑，會把程式的區段，在記憶體裡面挖一塊空間，然後把程式碼載入那塊空間 &lt;br /&gt;接著程式在運作的時候，就是記憶體與CPU之間溝通、運算、記錄等動作，而把【&lt;strong&gt;&lt;font color="#0000ff"&gt;挖塊記憶體，把程式載到那塊空間&lt;/font&gt;&lt;/strong&gt;】這個過程就是【&lt;strong&gt;&lt;font color="#0000ff"&gt;產生執行個體&lt;/font&gt;&lt;/strong&gt;】。 &lt;br /&gt;因此沒有New的話會怎樣，程式區塊根本沒有載入到記憶體中，因此也無法運作執行&lt;/p&gt;&lt;p&gt;講的擬人化一點&lt;/p&gt;&lt;p&gt;Dim oEmp as ObjEmployee&amp;nbsp; '宣告oEmp是ObjEmployee這種物件類別(此時有魂無體)&lt;a href="http://files.dotblogs.com.tw/topcat/0807/ConnectionNewDisposeOpenClose_E240/%E6%9C%89%E9%AC%BC_2.gif"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="54" alt="有鬼" width="54" border="0" src="http://files.dotblogs.com.tw/topcat/0807/ConnectionNewDisposeOpenClose_E240/%E6%9C%89%E9%AC%BC_thumb.gif" /&gt;&lt;/a&gt; &lt;br /&gt;oEmp = New ObjEmployee&amp;nbsp;&amp;nbsp; '產生執行個體(此時投胎轉世，靈魂變成實體，可以開始工作)&lt;a href="http://files.dotblogs.com.tw/topcat/0807/ConnectionNewDisposeOpenClose_E240/%E6%9C%89%E4%B8%80%E5%A5%97_2.gif"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="54" alt="有一套" width="54" border="0" src="http://files.dotblogs.com.tw/topcat/0807/ConnectionNewDisposeOpenClose_E240/%E6%9C%89%E4%B8%80%E5%A5%97_thumb.gif" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;h1&gt;什麼是Dispose&lt;/h1&gt;&lt;p&gt;&lt;br /&gt;當一個物件已經使用完後，未來不會再使用，此時這個物件已經完成他這一生(New完之後到現在)的任務。因此他可以塵歸塵、土歸土...一切還諸天地...此時就進行Dispose &lt;a href="http://files.dotblogs.com.tw/topcat/0807/ConnectionNewDisposeOpenClose_E240/%E6%9C%89%E9%AC%BC_4.gif"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="54" alt="有鬼" width="54" border="0" src="http://files.dotblogs.com.tw/topcat/0807/ConnectionNewDisposeOpenClose_E240/%E6%9C%89%E9%AC%BC_thumb_1.gif" /&gt;&lt;/a&gt; &lt;br /&gt;然而實際上，在記憶體中，&lt;strong&gt;當物件Dispose的時候，並沒有把該段記憶體清空，只是標註，這段空間不再使用&lt;/strong&gt;，直到GC啟動把他清空才算真正的清空。 &lt;br /&gt;因此如果用完後，不進行Dispose...那麼就會等到該位置很久沒動作了(就像有個人躺在地上，已經超過一定時間(一個月??)沒動作，也沒呼吸)，才會被其他的程式拿來用。&lt;/p&gt;&lt;p&gt;以上說明的是New(生)與Dispose(死)的關係&lt;/p&gt;&lt;hr /&gt;&lt;h1&gt;什麼是Open&lt;/h1&gt;&lt;p&gt;&lt;br /&gt;當你有了實體後，代表可以開始運作 &lt;br /&gt;但不是真的已經運作了 &lt;br /&gt;以Connecion來說&lt;/p&gt;&lt;div class="wlWriterSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:5194bae2-d5af-48fe-a9f8-dcd0e1d84fe6" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre class="vb" name="code"&gt;
Using Conn As New Connetion(ConnStr)
    'Conn.Open
    Dim Dr as SqlDataReader
    Using Cmmd as New SqlCommand(&amp;quot;Select...&amp;quot;,Conn)
        Dr = Cmmd.ExecuteReader
    End Using
End Using
&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;上面這段程式會出錯，他告訴你...Connection沒有Open，也就例如您&lt;strong&gt;&lt;font color="#0000ff"&gt;建立了一個橋&lt;/font&gt;&lt;/strong&gt;，但是這座橋卻&lt;strong&gt;&lt;font color="#0000ff"&gt;沒有通車&lt;/font&gt;&lt;/strong&gt;，因此也沒辦法用。因此使用DataReader或者Cmmd.ExecuteNoneQuery的時候，都需要告訴他已經通車了...他才會正常運作。&lt;/p&gt;&lt;p&gt;而如果使用&lt;strong&gt;&lt;font color="#0000ff"&gt;DataAdapter&lt;/font&gt;&lt;/strong&gt;的話這個傢伙比較厲害...&lt;a href="http://files.dotblogs.com.tw/topcat/0807/ConnectionNewDisposeOpenClose_E240/%E8%AE%9A_2.gif"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="54" alt="讚" width="54" border="0" src="http://files.dotblogs.com.tw/topcat/0807/ConnectionNewDisposeOpenClose_E240/%E8%AE%9A_thumb.gif" /&gt;&lt;/a&gt; 他會看有沒有通車，有通車他就用；沒通車的話，他會&lt;strong&gt;自己把這通道打開&lt;/strong&gt;，然後去使用。&lt;/p&gt;&lt;h1&gt;最後說什麼是Close...&lt;/h1&gt;&lt;p&gt;Close是關閉通道，通道關了是可以再開的唷。 &lt;br /&gt;然後跟上面的Dispose再比對一下： &lt;br /&gt;Close只是把通道關閉 &lt;br /&gt;Dispose卻是通知作業系統...我已經完成任務，這段記憶體你可以拿去再用...然後壽終正寢 &lt;br /&gt;知道不一樣在哪了嗎??&lt;a href="http://files.dotblogs.com.tw/topcat/0807/ConnectionNewDisposeOpenClose_E240/%E5%B9%B8%E7%A6%8F_2.gif"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="54" alt="幸福" width="54" border="0" src="http://files.dotblogs.com.tw/topcat/0807/ConnectionNewDisposeOpenClose_E240/%E5%B9%B8%E7%A6%8F_thumb.gif" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src ="http://blog.blueshop.com.tw/topcat/aggbug/55733.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>topcat</dc:creator><title>VB.NET中執行SSIS產生的DTSX</title><link>http://blog.blueshop.com.tw/topcat/archive/2008/03/11/54485.aspx</link><pubDate>Tue, 11 Mar 2008 14:08:00 GMT</pubDate><guid>http://blog.blueshop.com.tw/topcat/archive/2008/03/11/54485.aspx</guid><wfw:comment>http://blog.blueshop.com.tw/topcat/comments/54485.aspx</wfw:comment><comments>http://blog.blueshop.com.tw/topcat/archive/2008/03/11/54485.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blog.blueshop.com.tw/topcat/comments/commentRss/54485.aspx</wfw:commentRss><trackback:ping>http://blog.blueshop.com.tw/topcat/services/trackbacks/54485.aspx</trackback:ping><description>&lt;p&gt;當需要匯入匯出大量的資料時，尤其是異質的資料(例如把Access的mdb資料匯入到MS-SQL)，使用SSIS的方式速度是最快的，而且可以在SQL Server Management Studio裡面，直接在操作匯入匯出的時候，把過程儲存成SSIS的格式(.DTSX)。下次有相同的匯入匯出動作，就可以直接透過儲存的dstx來使用。&lt;/p&gt;

&lt;p&gt;如果想在程式中執行DTSX，可以透過以下的方式處理&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;在專案中，要加入參考【Microsoft.SQLServer.ManagedDTS】 &lt;/li&gt;

  &lt;li&gt;Imports Microsoft.SqlServer.Dts.Runtime &lt;/li&gt;

  &lt;li&gt;相關程式碼如下： 
    &lt;pre class="csharpcode" style="overflow: scroll; width: 540px; height: 200px"&gt;&lt;span class="kwrd"&gt;Dim&lt;/span&gt; pkg &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;String&lt;/span&gt; = &lt;span class="str"&gt;&amp;quot;D:\DTSX\MyImport.dtsx&amp;quot;&lt;/span&gt;    &lt;span class="rem"&gt;'DTSX檔案路徑&lt;/span&gt;
&lt;span class="kwrd"&gt;Dim&lt;/span&gt; app &lt;span class="kwrd"&gt;As&lt;/span&gt; Application = &lt;span class="kwrd"&gt;New&lt;/span&gt; Application()
&lt;span class="kwrd"&gt;Dim&lt;/span&gt; p &lt;span class="kwrd"&gt;As&lt;/span&gt; Package = app.LoadPackage(pkg, &lt;span class="kwrd"&gt;Nothing&lt;/span&gt;)

&lt;span class="kwrd"&gt;Dim&lt;/span&gt; vir &lt;span class="kwrd"&gt;As&lt;/span&gt; Variables = p.Variables

&lt;span class="kwrd"&gt;If&lt;/span&gt; &lt;span class="kwrd"&gt;Not&lt;/span&gt; p.Execute(&lt;span class="kwrd"&gt;Nothing&lt;/span&gt;, vir, &lt;span class="kwrd"&gt;Nothing&lt;/span&gt;, &lt;span class="kwrd"&gt;Nothing&lt;/span&gt;, &lt;span class="kwrd"&gt;Nothing&lt;/span&gt;) = DTSExecResult.Success &lt;span class="kwrd"&gt;Then&lt;/span&gt;
   &lt;span class="kwrd"&gt;Throw&lt;/span&gt; &lt;span class="kwrd"&gt;New&lt;/span&gt; Exception(&lt;span class="str"&gt;&amp;quot;NICE.mdb檔案匯入SQL失敗!!&amp;quot;&lt;/span&gt;)
&lt;span class="kwrd"&gt;Else&lt;/span&gt;
    &lt;span class="kwrd"&gt;Return&lt;/span&gt; &lt;span class="str"&gt;&amp;quot;Success&amp;quot;&lt;/span&gt;
&lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;&lt;/pre&gt;
    &lt;style type="text/css"&gt;






.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;可以在程式中執行，那麼無論是透過畫面的按鈕，還是排程都可以處理這樣的動作了!!&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;另外要注意的是，如果是使用Web Service或者是ASP.NET的話，可能要注意一下權限的問題&lt;/p&gt;
&lt;img src ="http://blog.blueshop.com.tw/topcat/aggbug/54485.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>topcat</dc:creator><title>透過VB.NET呼叫WebBrowser控制項內的JavaScript Function</title><link>http://blog.blueshop.com.tw/topcat/archive/2008/01/11/54033.aspx</link><pubDate>Fri, 11 Jan 2008 16:22:00 GMT</pubDate><guid>http://blog.blueshop.com.tw/topcat/archive/2008/01/11/54033.aspx</guid><wfw:comment>http://blog.blueshop.com.tw/topcat/comments/54033.aspx</wfw:comment><comments>http://blog.blueshop.com.tw/topcat/archive/2008/01/11/54033.aspx#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://blog.blueshop.com.tw/topcat/comments/commentRss/54033.aspx</wfw:commentRss><trackback:ping>http://blog.blueshop.com.tw/topcat/services/trackbacks/54033.aspx</trackback:ping><description>&lt;P&gt;小喵最近碰到這樣的狀況&lt;/P&gt;
&lt;P&gt;由於合作廠商的系統是外包的，因此不太可能因為我們公司的需求而做系統的改變，而該系統提供網頁的查詢資料，但是有分頁，分頁數多達數百頁(假設300頁)，因此如果每天要把所有的資料取下來，並且加以整理，然後整合到自己的系統裡，那需要耗費相當的人力。(可以想像一個人從上班後開始登入、進入資料畫面、開始這三百頁的點選。還要剔除不符合的資料，然後放到一個檔案，這個人每天光做這些就下班了!!)&lt;/P&gt;
&lt;P&gt;於是小喵決定寫一個程式來解決這樣的問題，在VB.NET 2005裡面有個WebBrowser可以讓小喵在VB.NET裡面處理，可是問題來了，怎麼與網頁中的JavaScript結合讓他翻頁呢??&lt;/P&gt;
&lt;P&gt;其實方式很簡單，假設下一頁有個JavaScript的Function名稱為PageDown()，那麼小喵只需要在程式裡面下&lt;/P&gt;
&lt;P&gt;&lt;TEXTAREA class=vb style="WIDTH: 672px; HEIGHT: 100px" name=code rows=6 cols=79&gt;Me.WebBrowser1.Navigate("javascript:PageDown()")&lt;/TEXTAREA&gt;&lt;/P&gt;
&lt;P&gt;這樣就能夠呼叫到啦!!&lt;/P&gt;&lt;img src ="http://blog.blueshop.com.tw/topcat/aggbug/54033.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>topcat</dc:creator><title>從小喵學習的經驗聊聊學習ASP.NET的建議</title><link>http://blog.blueshop.com.tw/topcat/archive/2007/12/06/53569.aspx</link><pubDate>Thu, 06 Dec 2007 11:08:00 GMT</pubDate><guid>http://blog.blueshop.com.tw/topcat/archive/2007/12/06/53569.aspx</guid><wfw:comment>http://blog.blueshop.com.tw/topcat/comments/53569.aspx</wfw:comment><comments>http://blog.blueshop.com.tw/topcat/archive/2007/12/06/53569.aspx#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://blog.blueshop.com.tw/topcat/comments/commentRss/53569.aspx</wfw:commentRss><trackback:ping>http://blog.blueshop.com.tw/topcat/services/trackbacks/53569.aspx</trackback:ping><description>&lt;P&gt;要走程式設計這條路，確實需要熱情...而且是持續不斷的熱情&lt;/P&gt;
&lt;P&gt;小喵聊聊小喵學習的經過&lt;/P&gt;
&lt;P&gt;小喵雖然是資訊工程畢業&lt;BR&gt;不過在學校的時候沒有認真學寫程式&lt;BR&gt;(那時候小喵的興趣在網管)&lt;BR&gt;小喵是等作業版本的那群之一&lt;/P&gt;
&lt;P&gt;不過在這個過程至少也建立了程式撰寫的基本概念&lt;BR&gt;(變數定義、函數運用、資料型態、判斷式與程式流程、迴圈、遞迴等...)&lt;BR&gt;這個部分您可以看您想學哪個程式語言(例如：C#,VB.NET)，買本那個語言介紹的書看看&lt;/P&gt;
&lt;P&gt;後來工作後才真正接觸到程式撰寫&lt;BR&gt;剛開始接觸的是ASP&lt;BR&gt;完全沒有HTML,JavaScript的基礎&lt;BR&gt;由於當時公司剛導入WebApp的方式&lt;BR&gt;公司有請老師來上課&lt;BR&gt;同事們的程度也都差不多&lt;BR&gt;記得當時老師說過一句話&lt;BR&gt;【&lt;BR&gt;學ASP沒有精通HTML,JavaScript(備註1)沒關係&lt;BR&gt;學習過程中多去檢視原始檔，再慢慢了解用到的HTML與JavaScript就好了&lt;BR&gt;】&lt;BR&gt;會這麼說小喵覺得是有原因的&lt;BR&gt;小喵曾經去翻過專門介紹HTML Tag的書&lt;BR&gt;裡面的東西有很多到目前為止還沒用過&lt;BR&gt;因此小喵的建議是，HTML,CSS,JavaScript各找一本當作參考字典就好&lt;BR&gt;有用到的時候來查看怎麼用&lt;/P&gt;
&lt;P&gt;直到2005年底VS2005出來的時候，小喵才慢慢把焦點轉到ASP.NET上&lt;/P&gt;
&lt;P&gt;備註1:&lt;BR&gt;精通HTML,JavaScript&lt;BR&gt;精通HTML是指所有的HTML的Tag用法都熟悉，還包括CSS的用法&lt;BR&gt;精通JavaScript則是不但要精通JavaScript的語法(其實與C還蠻類似的)&lt;BR&gt;還得對HTML內的各種物件屬性方法熟悉才稱得上精通&lt;BR&gt;----------------&lt;/P&gt;
&lt;P&gt;對於學習的建議，小喵的想法如下，提供參考&lt;/P&gt;
&lt;P&gt;1.程式語言的學習&lt;BR&gt;如果自己有熟悉的語言，熟C,Java,C++,Delphi的建議學C#，熟VB的學VB.NET&lt;BR&gt;如果都沒有學過程式語言，那麼建議學C#&lt;BR&gt;C#,JavaScript它們的基本語法都是從C衍生出來的&lt;BR&gt;因此您學基本語法的時候，可以一並用在JavaScript裡面&lt;BR&gt;(雖然小喵自己用的是VB.NET)&lt;BR&gt;這個部份找本書來看&lt;BR&gt;&lt;BR&gt;2.HTML部分&lt;BR&gt;建議先看過FORM裡面的物件&lt;BR&gt;&amp;lt;INPUT type=Text&amp;gt;&lt;BR&gt;&amp;lt;INPUT Type=button&amp;gt;&lt;BR&gt;&amp;lt;INPUT type=password&amp;gt;&lt;BR&gt;&amp;lt;INPUT type=submit&amp;gt;&lt;BR&gt;&amp;lt;INPUT type=reset&amp;gt;&lt;BR&gt;&amp;lt;SELECT&amp;gt;&lt;BR&gt;&amp;lt;TEXTArea&amp;gt;&amp;lt;/TEXTArea&amp;gt;&lt;BR&gt;以及會用來排畫面的&lt;BR&gt;&amp;lt;Table&amp;gt;&amp;lt;/table&amp;gt;&lt;BR&gt;&amp;lt;div&amp;gt;&amp;lt;/div&amp;gt;&lt;BR&gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&lt;BR&gt;市面上有很多視覺化編輯HTML的工具(Dreamwave,FrontPage,Expression Web等)&lt;BR&gt;建議可以視覺化編輯後他所產生的HTML大致上了解一下&lt;/P&gt;
&lt;P&gt;這些部分看過定義，先有個基本印象&lt;/P&gt;
&lt;P&gt;3.JavaScript的學習&lt;BR&gt;小喵覺得這部份的重點&lt;BR&gt;在於如何透過JavaScript去控制到畫面的各個物件(尤其是Form裡面的物件)&lt;BR&gt;並且清楚這些物件樹&lt;BR&gt;例如&lt;BR&gt;&lt;TEXTAREA class=xml style="WIDTH: 678px; HEIGHT: 100px" name=code rows=6 cols=80&gt;&amp;lt;HTML&amp;gt;
&amp;lt;BODY&amp;gt;
&amp;lt;FORM action="" id="form1" name="form1" method="post"&amp;gt;
 &amp;lt;INPUT type="text" id="text1" name="text1" value="abc"&amp;gt;
&amp;lt;/FORM&amp;gt;
&amp;lt;/BODY&amp;gt;
&amp;lt;/HTML&amp;gt;
&lt;/TEXTAREA&gt;&lt;BR&gt;那麼您要透過JavaScript取得text1裡面的資料&lt;BR&gt;就要知道這個HTML的架構&lt;BR&gt;IE--&amp;gt;window&lt;BR&gt;裡面有個BODY--&amp;gt;document&lt;BR&gt;裡面有個Form--&amp;gt;form1&lt;BR&gt;裡面有個Input--&amp;gt;text1&lt;BR&gt;所以在JavaScript裡面取得物件的方式是&lt;BR&gt;&lt;TEXTAREA class=jscript style="WIDTH: 654px; HEIGHT: 50px" name=code rows=3 cols=77&gt;var t=window.document.form1.text1.value;&lt;/TEXTAREA&gt;&lt;BR&gt;4.ASP.NET&lt;BR&gt;找本ASP.NET的書來學習&lt;BR&gt;建議學習程式碼與畫面分開的方式(CodeBeside)&lt;BR&gt;也就是一個abc.aspx的畫面會搭配一個abc.aspx.cs&lt;/P&gt;
&lt;P&gt;5.SQL學習&lt;BR&gt;a.學會視覺化的操作(建立資料表、檢視(View)裡面拉資料表、設定關聯、勾選要的欄位、設定條件)&lt;BR&gt;b.學習T-SQL:從視覺化操作產生的SQL語法..學習T-SQL(SELECT,INSERT,UPDATE, DELETE,INNER JOIN, LEFT JOIN, RIGHT JOIN)&lt;BR&gt;c.學習資料庫規劃(需求分析、資料表欄位規劃設計、資料庫正規化)&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;以上五點的時間順序建議&lt;BR&gt;1.建議先學程式語言，至少對基本程式有概念&lt;BR&gt;2~5可以同時間交叉學習&lt;/P&gt;
&lt;P&gt;
&lt;HR&gt;
&lt;/P&gt;
&lt;P&gt;最後，當基礎都OK了小喵建議，自己出一些題目給自己，可以參考在網路上看到的一些東西，給自己一些題目來撰寫，這樣可以在撰寫過程中，發現不足的地方並且尋求解決方法，讓自己更為精進。&lt;/P&gt;
&lt;P&gt;以上提供想走ASP.NET開發的人提供參考&lt;/P&gt;&lt;img src ="http://blog.blueshop.com.tw/topcat/aggbug/53569.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>topcat</dc:creator><title>Refactor工具For VB.NET, ASP.NET, C++</title><link>http://blog.blueshop.com.tw/topcat/archive/2007/10/12/52887.aspx</link><pubDate>Fri, 12 Oct 2007 09:21:00 GMT</pubDate><guid>http://blog.blueshop.com.tw/topcat/archive/2007/10/12/52887.aspx</guid><wfw:comment>http://blog.blueshop.com.tw/topcat/comments/52887.aspx</wfw:comment><comments>http://blog.blueshop.com.tw/topcat/archive/2007/10/12/52887.aspx#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://blog.blueshop.com.tw/topcat/comments/commentRss/52887.aspx</wfw:commentRss><trackback:ping>http://blog.blueshop.com.tw/topcat/services/trackbacks/52887.aspx</trackback:ping><description>&lt;P&gt;Refactor主要是要將原本可以正常運作，可是不容易擴充的程式，經過整理後，讓他保留原有的功能，並且可以增加該程式的擴充性，讓程式能夠更容易擴充與維護。&lt;/P&gt;
&lt;P&gt;這樣的工具使用C#的人一定不陌生，因為他已經內建在VS2005 C#裡面了。但是使用VB.NET、C++的使用者卻沒有這樣的一個工具可以幫忙&lt;/P&gt;
&lt;P&gt;有第三方廠商提供這樣的工具給大家安裝使用、而且重點是，他是免費的。有需要的請到以下網址下載安裝：&lt;/P&gt;
&lt;P&gt;VB.NET：&lt;A href="http://www.devexpress.com/Products/NET/IDETools/VBRefactor/"&gt;http://www.devexpress.com/Products/NET/IDETools/VBRefactor/&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;ASP.NET：&lt;A href="http://www.devexpress.com/Products/NET/IDETools/RefactorASP/"&gt;http://www.devexpress.com/Products/NET/IDETools/RefactorASP/&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;C++：&lt;A href="http://www.devexpress.com/Products/NET/IDETools/RefactorCPP/"&gt;http://www.devexpress.com/Products/NET/IDETools/RefactorCPP/&lt;/A&gt;&lt;/P&gt;&lt;img src ="http://blog.blueshop.com.tw/topcat/aggbug/52887.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>topcat</dc:creator><title>使用VB.NET產生ANSI的文字檔</title><link>http://blog.blueshop.com.tw/topcat/archive/2007/07/05/51677.aspx</link><pubDate>Thu, 05 Jul 2007 09:21:00 GMT</pubDate><guid>http://blog.blueshop.com.tw/topcat/archive/2007/07/05/51677.aspx</guid><wfw:comment>http://blog.blueshop.com.tw/topcat/comments/51677.aspx</wfw:comment><comments>http://blog.blueshop.com.tw/topcat/archive/2007/07/05/51677.aspx#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://blog.blueshop.com.tw/topcat/comments/commentRss/51677.aspx</wfw:commentRss><trackback:ping>http://blog.blueshop.com.tw/topcat/services/trackbacks/51677.aspx</trackback:ping><description>&lt;P&gt;話說小喵最近在撰寫程式碼產生器，使用VB.NET撰寫介面，讓使用者輸入基本的參數後，就產生一些基本的程式碼。&lt;/P&gt;
&lt;P&gt;在過程中小喵發現，產生的程式碼使用【記事本】看起來內容都是正常的，可是從VS2005開啟相關檔案後卻發現，所有中文的部分都變成了亂碼!!&lt;/P&gt;
&lt;P&gt;於是小喵開始尋找原因，最後發現原來產生的文字檔都是用UTF-8的格式。小喵試著用記事本把檔案另存成ANSI格式後使用VS2005開啟，中文字的部分終於正常了。&lt;/P&gt;
&lt;P&gt;
&lt;HR&gt;
&lt;/P&gt;
&lt;P&gt;故事講完了回到正提，小喵使用StreamWriter的方式產生文字檔，程式如下：&lt;/P&gt;
&lt;P&gt;&lt;TEXTAREA class=vb style="WIDTH: 681px; HEIGHT: 100px" name=code rows=6 cols=80&gt;Using sw As New StreamWriter("D:\TEMP\Test.vb")
    sw.WriteLine("'這是測試文字輸出")
    sw.close()
End Using
&lt;/TEXTAREA&gt;&lt;/P&gt;
&lt;P&gt;這樣的方式在沒有指定輸出格式的狀況下，預設是UTF-8。要改成ANSI(Big5)就需要改成&lt;/P&gt;
&lt;P&gt;&lt;TEXTAREA class=vb style="WIDTH: 681px; HEIGHT: 100px" name=code rows=6 cols=80&gt;Using sw As New StreamWriter("D:\TEMP\Test.vb", False, System.Text.Encoding.GetEncoding(950))
    sw.WriteLine("'這是測試文字輸出")
    sw.close()
End Using
&lt;/TEXTAREA&gt;&lt;/P&gt;
&lt;P&gt;其中，950是代表您要用Big5編碼的方式進行，如果要輸出別的編碼方式，可以輸入不同的代號。&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;img src ="http://blog.blueshop.com.tw/topcat/aggbug/51677.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>topcat</dc:creator><title>.NET呼叫VB6撰寫元件【釋放資源】的語法</title><link>http://blog.blueshop.com.tw/topcat/archive/2007/04/04/50403.aspx</link><pubDate>Wed, 04 Apr 2007 18:31:00 GMT</pubDate><guid>http://blog.blueshop.com.tw/topcat/archive/2007/04/04/50403.aspx</guid><wfw:comment>http://blog.blueshop.com.tw/topcat/comments/50403.aspx</wfw:comment><comments>http://blog.blueshop.com.tw/topcat/archive/2007/04/04/50403.aspx#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://blog.blueshop.com.tw/topcat/comments/commentRss/50403.aspx</wfw:commentRss><trackback:ping>http://blog.blueshop.com.tw/topcat/services/trackbacks/50403.aspx</trackback:ping><description>在撰寫.NET的時候，.NET並不會自動作資源回收，所以呼叫完元件後，需要自己下語法將資源回收&lt;br&gt;
&lt;br&gt;
如果呼叫的是.NET所撰寫的COM+元件，那麼資源回收的語法是&lt;br&gt;
&lt;br&gt;
Obj.Dispose()&lt;br&gt;
&lt;br&gt;
Obj = Nothing&lt;br&gt;
&lt;br&gt;
 &lt;br&gt;
&lt;br&gt;
但是如果呼叫的是VB6的元件，那麼不能呼叫Dispose將資源釋放&lt;br&gt;
&lt;br&gt;
所以需要用以下的指令將資源釋放(元件服務中的數字會停下來)&lt;br&gt;
&lt;br&gt;
 &lt;br&gt;
&lt;br&gt;
 &lt;br&gt;&lt;font color=red&gt;&lt;b&gt;System.Runtime.InteropServices.Marshal.ReleaseComObject(obj)&lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
整體的語法如下&lt;br&gt;
Dim obj as Object = CreateObject(“PDemo.CDemo”)&lt;br&gt;
&lt;br&gt;
Try&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
Catch ex As Exception&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
Finally&lt;br&gt;
&lt;br&gt;
&lt;br&gt;&lt;font color=red&gt;&lt;b&gt;System.Runtime.InteropServices.Marshal.ReleaseComObject(obj)&lt;/b&gt;&lt;/font&gt;&lt;br&gt;
&lt;br&gt;
    obj = Nothing&lt;br&gt;
&lt;br&gt;
End Try&lt;br&gt;

&lt;img src ="http://blog.blueshop.com.tw/topcat/aggbug/50403.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>topcat</dc:creator><title>.NET中將圖檔解析度轉小並另存檔案的程式碼</title><link>http://blog.blueshop.com.tw/topcat/archive/2007/01/03/49053.aspx</link><pubDate>Wed, 03 Jan 2007 11:52:00 GMT</pubDate><guid>http://blog.blueshop.com.tw/topcat/archive/2007/01/03/49053.aspx</guid><wfw:comment>http://blog.blueshop.com.tw/topcat/comments/49053.aspx</wfw:comment><comments>http://blog.blueshop.com.tw/topcat/archive/2007/01/03/49053.aspx#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://blog.blueshop.com.tw/topcat/comments/commentRss/49053.aspx</wfw:commentRss><trackback:ping>http://blog.blueshop.com.tw/topcat/services/trackbacks/49053.aspx</trackback:ping><description>&lt;p&gt;&lt;font face="Arial"&gt;最近小喵的同事問到小喵一個問題&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;由於目前的數位相機的解析度都很高，所以圖片的解析度都很大，檔案也很大，那麼如果把圖檔上傳後，其他的人要瀏覽就會花費許多的時間。&lt;/p&gt;
&lt;p&gt;如果使用者可以上傳前就先把圖檔轉小，然後再上傳，這樣上傳的時間會變少、其他的讀者瀏覽該圖檔時也不會等太久，但是問題來了，一般的使用者不會用影像處理軟體，使用者又遍佈全省各地，因此不可能一個一個教他們如何使用影像處理軟體來轉換圖的解析度&lt;/p&gt;
&lt;p&gt;因應這樣的需求，小喵開始尋找.NET中如何處理影像解析度的相關程式語法，原來.NET中要處理這些動作是很簡單的，沒幾行語法就可以達成了。相關範例語法如下：&lt;/p&gt;
&lt;p&gt;首先記得要先Imports 相關的NameSpace：&lt;br&gt;
Imports System.Drawing&lt;br&gt;
Imports System.Drawing.Imaging
&lt;/p&gt;
&lt;p&gt;&lt;textarea class="vb" rows="4" cols="62" name="code"&gt;
Dim g As Image = Image.FromFile("D:\Backup\T1.jpg") '讀取原始圖檔
Dim ThisFormat As ImageFormat = g.RawFormat  '取得圖檔格式
Dim FixWidth As Integer = 640  '設定修改後的寬度
Dim FixHeight As Integer = (FixWidth / g.Width) * g.Height '計算等比例縮小後的高度
Dim ImgOutput As New Bitmap(g, FixWidth, FixHeight)  '宣告新的圖，並指定高度
ImgOutput.Save("D:\Backup\T1.jpg", ThisFormat)  '存成指定的格式

'最後將物件釋放
g.Dispose()
ImgOutput.Dispose()
&lt;/textarea&gt;&lt;/p&gt;

&lt;p&gt;有了以上的語法後，接著就是如何的應用了，小喵有兩個想法提供給小喵同事&lt;br&gt;一是寫個Client端的程式，讓使用者使用，先把圖轉小後，再上傳。&lt;br&gt;二是讓使用者把原圖上傳後，在ASP.NET中將圖檔轉小後蓋掉原來的檔案。
&lt;/p&gt;&lt;img src ="http://blog.blueshop.com.tw/topcat/aggbug/49053.aspx" width = "1" height = "1" /&gt;</description></item></channel></rss>