<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2russianfull.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:blogChannel="http://backend.userland.com/blogChannelModule" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" 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/" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
  <channel>
    <title>FAQdotNet</title>
    <description>Рецепты для .Net  или все, что вы хотели бы использовать, но забыли как.</description>
    <link>http://faqdot.net/</link>
    <docs>http://www.rssboard.org/rss-specification</docs>
    <generator>BlogEngine.NET 1.4.5.0</generator>
    <language>ru-RU</language>
    <blogChannel:blogRoll>http://faqdot.net/opml.axd</blogChannel:blogRoll>
    <blogChannel:blink>http://www.dotnetblogengine.net/syndication.axd</blogChannel:blink>
    <dc:creator>Flame</dc:creator>
    <dc:title>FAQdotNet</dc:title>
    <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/FAQdotNet" /><feedburner:info uri="faqdotnet" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><creativeCommons:license>http://creativecommons.org/licenses/by-sa/2.0/</creativeCommons:license><image><link>http://creativecommons.org/licenses/by-sa/2.0/</link><url>http://creativecommons.org/images/public/somerights20.gif</url><title>Some Rights Reserved</title></image><feedburner:feedFlare href="http://add.my.yahoo.com/rss?url=http%3A%2F%2Ffeeds.feedburner.com%2FFAQdotNet" src="http://us.i1.yimg.com/us.yimg.com/i/us/my/addtomyyahoo4.gif">Subscribe with My Yahoo!</feedburner:feedFlare><feedburner:feedFlare href="http://www.newsgator.com/ngs/subscriber/subext.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2FFAQdotNet" src="http://www.newsgator.com/images/ngsub1.gif">Subscribe with NewsGator</feedburner:feedFlare><feedburner:feedFlare href="http://feeds.my.aol.com/add.jsp?url=http%3A%2F%2Ffeeds.feedburner.com%2FFAQdotNet" src="http://o.aolcdn.com/favorites.my.aol.com/webmaster/ffclient/webroot/locale/en-US/images/myAOLButtonSmall.gif">Subscribe with My AOL</feedburner:feedFlare><feedburner:feedFlare href="http://www.bloglines.com/sub/http://feeds.feedburner.com/FAQdotNet" src="http://www.bloglines.com/images/sub_modern11.gif">Subscribe with Bloglines</feedburner:feedFlare><feedburner:feedFlare href="http://www.netvibes.com/subscribe.php?url=http%3A%2F%2Ffeeds.feedburner.com%2FFAQdotNet" src="http://www.netvibes.com/img/add2netvibes.gif">Subscribe with Netvibes</feedburner:feedFlare><feedburner:feedFlare href="http://fusion.google.com/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2FFAQdotNet" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><feedburner:feedFlare href="http://www.pageflakes.com/subscribe.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2FFAQdotNet" src="http://www.pageflakes.com/ImageFile.ashx?instanceId=Static_4&amp;fileName=ATP_blu_91x17.gif">Subscribe with Pageflakes</feedburner:feedFlare><feedburner:feedFlare href="http://lenta.yandex.ru/settings.xml?name=feed&amp;url=http%3A%2F%2Ffeeds.feedburner.com%2FFAQdotNet" src="http://lenta.yandex.ru/i/addfeed.gif">?????? ? ??????.?????</feedburner:feedFlare><feedburner:feedFlare href="http://www.plusmo.com/add?url=http%3A%2F%2Ffeeds.feedburner.com%2FFAQdotNet" src="http://plusmo.com/res/graphics/fbplusmo.gif">Subscribe with Plusmo</feedburner:feedFlare><feedburner:feedFlare href="http://www.thefreedictionary.com/_/hp/AddRSS.aspx?http%3A%2F%2Ffeeds.feedburner.com%2FFAQdotNet" src="http://img.tfd.com/hp/addToTheFreeDictionary.gif">Subscribe with The Free Dictionary</feedburner:feedFlare><feedburner:feedFlare href="http://www.bitty.com/manual/?contenttype=rssfeed&amp;contentvalue=http%3A%2F%2Ffeeds.feedburner.com%2FFAQdotNet" src="http://www.bitty.com/img/bittychicklet_91x17.gif">Subscribe with Bitty Browser</feedburner:feedFlare><feedburner:feedFlare href="http://www.newsalloy.com/?rss=http%3A%2F%2Ffeeds.feedburner.com%2FFAQdotNet" src="http://www.newsalloy.com/subrss3.gif">Subscribe with NewsAlloy</feedburner:feedFlare><feedburner:feedFlare href="http://www.live.com/?add=http%3A%2F%2Ffeeds.feedburner.com%2FFAQdotNet" src="http://tkfiles.storage.msn.com/x1piYkpqHC_35nIp1gLE68-wvzLZO8iXl_JMledmJQXP-XTBOLfmQv4zhj4MhcWEJh_GtoBIiAl1Mjh-ndp9k47If7hTaFno0mxW9_i3p_5qQw">Subscribe with Live.com</feedburner:feedFlare><feedburner:feedFlare href="http://mix.excite.eu/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2FFAQdotNet" src="http://image.excite.co.uk/mix/addtomix.gif">Subscribe with Excite MIX</feedburner:feedFlare><feedburner:feedFlare href="http://download.attensa.com/app/get_attensa.html?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2FFAQdotNet" src="http://www.attensa.com/blogs/attensa/WindowsLiveWriter/BadgeredintoBadges_10C02/attensa_feed_button5.gif">Subscribe with Attensa for Outlook</feedburner:feedFlare><feedburner:feedFlare href="http://www.webwag.com/wwgthis.php?url=http%3A%2F%2Ffeeds.feedburner.com%2FFAQdotNet" src="http://www.webwag.com/images/wwgthis.gif">Subscribe with Webwag</feedburner:feedFlare><feedburner:feedFlare href="http://www.podcastready.com/oneclick_bookmark.php?url=http%3A%2F%2Ffeeds.feedburner.com%2FFAQdotNet" src="http://www.podcastready.com/images/podcastready_button.gif">Subscribe with Podcast Ready</feedburner:feedFlare><feedburner:feedFlare href="http://www.flurry.com/pushRssFeed.do?r=fb&amp;url=http%3A%2F%2Ffeeds.feedburner.com%2FFAQdotNet" src="http://www.flurry.com/images/flurry_rss_logo2.gif">Subscribe with Flurry</feedburner:feedFlare><feedburner:feedFlare href="http://www.wikio.com/subscribe?url=http%3A%2F%2Ffeeds.feedburner.com%2FFAQdotNet" src="http://www.wikio.com/shared/img/add2wikio.gif">Subscribe with Wikio</feedburner:feedFlare><feedburner:feedFlare href="http://www.dailyrotation.com/index.php?feed=http%3A%2F%2Ffeeds.feedburner.com%2FFAQdotNet" src="http://www.dailyrotation.com/rss-dr2.gif">Subscribe with Daily Rotation</feedburner:feedFlare><item>
      <title>Как уменьшить размер transaction_log?</title>
      <description>&lt;p&gt;
Для уменьшения размера transaction log в MS SQL Server можно воспользоваться следующими командами:
&lt;/p&gt;
&lt;div class="code"&gt;&lt;p&gt;
&lt;span class="kwrd"&gt;USE&lt;/span&gt; testDB
&lt;/p&gt;
&lt;p&gt;
--Узнаем названия файлов
&lt;span class="kwrd"&gt;SELECT&lt;/span&gt; file_id, name&lt;br /&gt;
&lt;span class="kwrd"&gt;FROM&lt;/span&gt; sys.database_files;&lt;br /&gt;
&lt;br /&gt;
&lt;span class="kwrd"&gt;ALTER&lt;/span&gt; &lt;span class="kwrd"&gt;DATABASE&lt;/span&gt; testDB&lt;br /&gt;
&lt;span class="kwrd"&gt;SET&lt;/span&gt; RECOVERY SIMPLE;&lt;br /&gt;
&lt;br /&gt;
--Урезаем размер до 100 Mb
&lt;span class="kwrd"&gt;DBCC&lt;/span&gt; SHRINKFILE(testDB_log, 100)&lt;br /&gt;
&lt;br /&gt;
&lt;span class="kwrd"&gt;ALTER&lt;/span&gt; &lt;span class="kwrd"&gt;DATABASE&lt;/span&gt; testDB&lt;br /&gt;
&lt;span class="kwrd"&gt;SET&lt;/span&gt; RECOVERY &lt;span class="kwrd"&gt;FULL&lt;/span&gt;;
&lt;/p&gt;
&lt;/div&gt;&lt;p&gt;
P.S. Для того что бы оценить сколько используется реально места для transaction log выполняем следующие действия в Management Studio &amp;lt;правый крыс&amp;gt; на базу -&amp;gt; Reports -&amp;gt; Standart Reports -&amp;gt; Disk Usage = диаграмма использования дискового пространства.
&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/FAQdotNet/~4/HdunAo87jPk" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/FAQdotNet/~3/HdunAo87jPk/post.aspx</link>
      <author>flame.nospam@nospam.faqdot.net (Flame)</author>
      <comments>http://faqdot.net/post/trancate-transaction-log.aspx#comment</comments>
      <guid isPermaLink="false">http://faqdot.net/post.aspx?id=9e260c55-898b-4183-8b84-f9bc4dfc84bd</guid>
      <pubDate>Wed, 14 Oct 2009 11:49:00 +0400</pubDate>
      <category>DB</category>
      <dc:publisher>Flame</dc:publisher>
      <pingback:server>http://faqdot.net/pingback.axd</pingback:server>
      <pingback:target>http://faqdot.net/post.aspx?id=9e260c55-898b-4183-8b84-f9bc4dfc84bd</pingback:target>
      <slash:comments>86</slash:comments>
      <trackback:ping>http://faqdot.net/trackback.axd?id=9e260c55-898b-4183-8b84-f9bc4dfc84bd</trackback:ping>
      <wfw:comment>http://faqdot.net/post/trancate-transaction-log.aspx#comment</wfw:comment>
      <wfw:commentRss>http://faqdot.net/syndication.axd?post=9e260c55-898b-4183-8b84-f9bc4dfc84bd</wfw:commentRss>
    <feedburner:origLink>http://faqdot.net/post.aspx?id=9e260c55-898b-4183-8b84-f9bc4dfc84bd</feedburner:origLink></item>
    <item>
      <title>Как узнать название съемного диска в WM?</title>
      <description>&lt;p&gt;
В Windows Mobile, для того чтобы выяснить как называется съемный диск в системе можно воспользоваться следующим методом:
&lt;/p&gt;
&lt;div class="code"&gt;&lt;p&gt;
&lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; GetStorageCard()&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;span class="rem"&gt;//initialize the path as an empty string&lt;br /&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;span class="kwrd"&gt;string&lt;/span&gt; firstCard = &amp;quot;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;System.IO.DirectoryInfo di = &lt;span class="kwrd"&gt;new&lt;/span&gt; System.IO.DirectoryInfo(&amp;quot;\\&amp;quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;System.IO.FileSystemInfo[] fsi = di.GetFileSystemInfos();&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;span class="rem"&gt;//iterate through them&lt;br /&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; x = 0; x &amp;lt; fsi.Length; x++)&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;span class="rem"&gt;//check to see if this is a temporary storage card (e.g. SD card)&lt;br /&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;span class="kwrd"&gt;if&lt;/span&gt; ((fsi[x].Attributes &amp;amp; System.IO.FileAttributes.Temporary) == System.IO.FileAttributes.Temporary)&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;span class="rem"&gt;//if so, return the path&lt;br /&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;firstCard = fsi[x].FullName;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;span class="kwrd"&gt;return&lt;/span&gt; firstCard;&lt;br /&gt;
}
&lt;/p&gt;
&lt;/div&gt;&lt;p&gt;
P.S.&lt;br /&gt;
Не забываем подключать using System.IO; &lt;br /&gt;
&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/FAQdotNet/~4/LOpoNXdQnHs" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/FAQdotNet/~3/LOpoNXdQnHs/post.aspx</link>
      <author>flame.nospam@nospam.faqdot.net (Flame)</author>
      <comments>http://faqdot.net/post/Storage-Cart-Name.aspx#comment</comments>
      <guid isPermaLink="false">http://faqdot.net/post.aspx?id=8e0fe8b4-1f29-45b5-abd8-893d72fcab74</guid>
      <pubDate>Wed, 07 Oct 2009 17:35:00 +0400</pubDate>
      <category>Windows Mobile</category>
      <dc:publisher>Flame</dc:publisher>
      <pingback:server>http://faqdot.net/pingback.axd</pingback:server>
      <pingback:target>http://faqdot.net/post.aspx?id=8e0fe8b4-1f29-45b5-abd8-893d72fcab74</pingback:target>
      <slash:comments>97</slash:comments>
      <trackback:ping>http://faqdot.net/trackback.axd?id=8e0fe8b4-1f29-45b5-abd8-893d72fcab74</trackback:ping>
      <wfw:comment>http://faqdot.net/post/Storage-Cart-Name.aspx#comment</wfw:comment>
      <wfw:commentRss>http://faqdot.net/syndication.axd?post=8e0fe8b4-1f29-45b5-abd8-893d72fcab74</wfw:commentRss>
    <feedburner:origLink>http://faqdot.net/post.aspx?id=8e0fe8b4-1f29-45b5-abd8-893d72fcab74</feedburner:origLink></item>
    <item>
      <title>Как скачать файл по http?</title>
      <description>&lt;p&gt;
Для того что бы скачать файл по протоколу http на C# потребуется написать всего несколько строчек и подключить пространство имен System.Net.
&lt;/p&gt;
&lt;h4&gt;Самый простой, но не самый наглядный способ.&lt;/h4&gt;Просто как две строчки написать:&lt;br /&gt;
&lt;div class="code"&gt;&lt;p&gt;
WebClient webClient = &lt;span class="kwrd"&gt;new&lt;/span&gt; WebClient();&lt;br /&gt;
webClient.DownloadFile(&amp;quot;http:&lt;span class="rem"&gt;//mysite.com/myfile.txt&amp;quot;, @&amp;quot;c:\myfile.txt&amp;quot;);&lt;br /&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/div&gt;&lt;br /&gt;
Но никакого отображения процесса загрузки файла не происходит, что конечно же не устраивает нетерпеливых пользователей.&lt;br /&gt;
&lt;h4&gt;Скачка файла с отображением процесса загрузки.&lt;/h4&gt;
&lt;p&gt;
Для загрузки файла по http не блокируя при этом основного потока необходимо воспользоваться методом &lt;a href="http://msdn.microsoft.com/ru-ru/library/ms144196.aspx" title="http://msdn.microsoft.com/ru-ru/library/ms144196.aspx"&gt;DownloadFileAsync&lt;/a&gt;. Также можно обработать событие DownloadProgressChanged для индикации процесса загрузки файла и событие DownloadFileCompleted для определения момента, когда файл будет полностью загружен.&lt;br /&gt;
&lt;/p&gt;
&lt;div class="code"&gt;&lt;p&gt;
&lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; btnDownload_Click(&lt;span class="kwrd"&gt;object&lt;/span&gt; sender, EventArgs e)&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp; WebClient webClient = &lt;span class="kwrd"&gt;new&lt;/span&gt; WebClient();&lt;br /&gt;
&amp;nbsp; webClient.DownloadFileCompleted += &lt;span class="kwrd"&gt;new&lt;/span&gt; AsyncCompletedEventHandler(Completed);&lt;br /&gt;
&amp;nbsp; webClient.DownloadProgressChanged += &lt;span class="kwrd"&gt;new&lt;/span&gt; DownloadProgressChangedEventHandler(ProgressChanged);&lt;br /&gt;
&amp;nbsp; webClient.DownloadFileAsync(&lt;span class="kwrd"&gt;new&lt;/span&gt; Uri(&amp;quot;http:&lt;span class="rem"&gt;//mysite.com/myfile.txt&amp;quot;), @&amp;quot;c:\myfile.txt&amp;quot;);&lt;br /&gt;&lt;/span&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; ProgressChanged(&lt;span class="kwrd"&gt;object&lt;/span&gt; sender, DownloadProgressChangedEventArgs e)&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp; progressBar.Value = e.ProgressPercentage;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Completed(&lt;span class="kwrd"&gt;object&lt;/span&gt; sender, AsyncCompletedEventArgs e)&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp; MessageBox.Show(&amp;quot;Download completed!&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;/p&gt;
&lt;/div&gt;&lt;h4&gt;Скачка файла с отображением процесса загрузки при помощи WebRequest.&lt;/h4&gt;
&lt;p&gt;
Для того что бы скачать файл с помощью класса WebRequest потребуется немного больше усилий чем в способах описанных выше и особой выгоды от этого не будет, но рассмотреть их тоже стоит.
&lt;/p&gt;
&lt;p&gt;
Для этого необходимо послать запрос по необходимому адресу и в ответе будет содержаться ссылка на поток с данными:
&lt;/p&gt;
&lt;div class="code"&gt;&lt;p&gt;
HttpWebRequest _req = (HttpWebRequest) WebRequest.Create(&amp;ldquo;http:&lt;span class="rem"&gt;//mysite.com/myfile.txt&amp;rdquo;);&lt;br /&gt;&lt;/span&gt;
WebResponse _response = _req.GetResponse();&lt;br /&gt;
Stream _stream = _response.GetResponseStream();&lt;br /&gt;
&lt;/p&gt;
&lt;/div&gt;&lt;p&gt;
Для того что бы сохранить данные на диске необходимо в цикле прочитать содержимое потока полученного в результате выполнения запроса, например вот так:
&lt;/p&gt;
&lt;div class="code"&gt;&lt;p&gt;
FileStream _fs = &lt;span class="kwrd"&gt;new&lt;/span&gt; FileStream(&amp;ldquo;myfile.txt&amp;rdquo;, FileMode.Create)&lt;br /&gt;
&lt;br /&gt;
&lt;span class="kwrd"&gt;int&lt;/span&gt; _bytesRead = 1;&lt;br /&gt;
&lt;span class="kwrd"&gt;while&lt;/span&gt; (_bytesRead != 0)&lt;br /&gt;
{&lt;br /&gt;
&lt;span class="kwrd"&gt;byte&lt;/span&gt;[] buffer = &lt;span class="kwrd"&gt;new&lt;/span&gt; &lt;span class="kwrd"&gt;byte&lt;/span&gt;[1024];&lt;br /&gt;
_bytesRead = _stream.Read(buffer, 0, buffer.Length);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _fs.Write(buffer, 0, buffer.Length);&lt;br /&gt;
}&lt;br /&gt;
&lt;/p&gt;
&lt;/div&gt;&lt;p&gt;
Запустив все эти действия в отдельном потоке, в основном потоке можно отображать процесс загрузки. Так как работать с визуальными компонентам инеобходимо из потока в котором они создавались, то для изменения например ProgressBar стоит воспользоваться методом Invoke():&lt;br /&gt;
&lt;/p&gt;
&lt;div class="code"&gt;&lt;p&gt;
&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;delegate&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; dClose();&lt;br /&gt;
&lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;delegate&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; dProgressInit(ProgressBar aPb, Int32 aMaxValue);&lt;br /&gt;
&lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;delegate&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; dProgressValue(ProgressBar aPb, Int32 aValue);&lt;br /&gt;
&lt;br /&gt;
&lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; ProgressInit(ProgressBar aPb, Int32 aMaxValue)&lt;br /&gt;
{&lt;br /&gt;
aPb.Maximum = aMaxValue;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; ProgressValue(ProgressBar aPb, Int32 aValue)&lt;br /&gt;
{&lt;br /&gt;
aPb.Value = aValue;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; DownloadFiles()&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
HttpWebRequest _req = (HttpWebRequest)WebRequest.Create(item.Link);&lt;br /&gt;
WebResponse _response = _req.GetResponse();&lt;br /&gt;
&lt;br /&gt;
Invoke(&lt;span class="kwrd"&gt;new&lt;/span&gt; dProgressInit(ProgressInit), &lt;span class="kwrd"&gt;new&lt;/span&gt; &lt;span class="kwrd"&gt;object&lt;/span&gt;[] { pbBytes,(Int32)_response.ContentLength });&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Invoke(&lt;span class="kwrd"&gt;new&lt;/span&gt; dProgressValue(ProgressValue), &lt;span class="kwrd"&gt;new&lt;/span&gt; &lt;span class="kwrd"&gt;object&lt;/span&gt;[] { pbBytes, 0 });&lt;br /&gt;
&lt;br /&gt;
&lt;span class="kwrd"&gt;using&lt;/span&gt; (Stream _stream = _response.GetResponseStream())&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;span class="kwrd"&gt;using&lt;/span&gt; (FileStream _fs = &lt;span class="kwrd"&gt;new&lt;/span&gt; FileStream(@&amp;quot;c:\test.txt&amp;quot;,FileMode.Create))&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;int&lt;/span&gt; _bytesRead = 1;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;while&lt;/span&gt; (_bytesRead != 0)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;span class="kwrd"&gt;byte&lt;/span&gt;[] buffer = &lt;span class="kwrd"&gt;new&lt;/span&gt; &lt;span class="kwrd"&gt;byte&lt;/span&gt;[32768];&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _bytesRead = _stream.Read(buffer, 0, buffer.Length);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _fs.Write(buffer, 0, buffer.Length);&lt;br /&gt;
&lt;br /&gt;
buffer = &lt;span class="kwrd"&gt;null&lt;/span&gt;;&lt;br /&gt;
&lt;br /&gt;
Invoke(&lt;span class="kwrd"&gt;new&lt;/span&gt; dProgressValue(ProgressValue), &lt;span class="kwrd"&gt;new&lt;/span&gt; &lt;span class="kwrd"&gt;object&lt;/span&gt;[] { pbBytes, pbBytes.Value + _bytesRead });&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Invoke(&lt;span class="kwrd"&gt;new&lt;/span&gt; dClose(pbBytes.Refresh));&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
}
&lt;/p&gt;
&lt;/div&gt;&lt;p&gt;
Особое внимание в этом способе загрузки следует уделить размеру буфера (byte[] buffer = new byte[32768];) т.к. это влияет на скорость и качество загрузки. Чем меньше буфер, тем необходимо потратить больше ресурсов (времени) на запрос следующей части, но меньше вероятность сбоя подключения и соответственно наоборот. &lt;br /&gt;
&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/FAQdotNet/~4/e50wc3bEUt0" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/FAQdotNet/~3/e50wc3bEUt0/post.aspx</link>
      <author>flame.nospam@nospam.faqdot.net (Flame)</author>
      <comments>http://faqdot.net/post/DownloadFile-over-http.aspx#comment</comments>
      <guid isPermaLink="false">http://faqdot.net/post.aspx?id=facaba81-3e0a-4181-a286-1b5df3f362b8</guid>
      <pubDate>Thu, 24 Sep 2009 15:24:00 +0400</pubDate>
      <category>FAQ С#</category>
      <category>WinForms</category>
      <dc:publisher>Flame</dc:publisher>
      <pingback:server>http://faqdot.net/pingback.axd</pingback:server>
      <pingback:target>http://faqdot.net/post.aspx?id=facaba81-3e0a-4181-a286-1b5df3f362b8</pingback:target>
      <slash:comments>142</slash:comments>
      <trackback:ping>http://faqdot.net/trackback.axd?id=facaba81-3e0a-4181-a286-1b5df3f362b8</trackback:ping>
      <wfw:comment>http://faqdot.net/post/DownloadFile-over-http.aspx#comment</wfw:comment>
      <wfw:commentRss>http://faqdot.net/syndication.axd?post=facaba81-3e0a-4181-a286-1b5df3f362b8</wfw:commentRss>
    <feedburner:origLink>http://faqdot.net/post.aspx?id=facaba81-3e0a-4181-a286-1b5df3f362b8</feedburner:origLink></item>
    <item>
      <title>Как получить список всех файлов в директории?</title>
      <description>&lt;p&gt;
Для реализации этой, казалось бы, тривиальной задачи идеально подходит рекурсия, например вот такая:
&lt;/p&gt;
&lt;div class="code"&gt;&lt;p&gt;
List&amp;lt;String&amp;gt; GetAllFiles(String aPath)&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; List&amp;lt;String&amp;gt; _tmpFiles = &lt;span class="kwrd"&gt;new&lt;/span&gt; List&amp;lt;&lt;span class="kwrd"&gt;string&lt;/span&gt;&amp;gt;();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; _tmpFiles.AddRange(Directory.GetFiles(aPath));&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (String dirPath &lt;span class="kwrd"&gt;in&lt;/span&gt; Directory.GetDirectories(aPath))&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _tmpFiles.AddRange(GetAllFiles(dirPath));&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;return&lt;/span&gt; _tmpFiles;&lt;br /&gt;
}
&lt;/p&gt;
&lt;/div&gt;&lt;p&gt;
Но оказывается, в случае, когда требуется просто получить список файлов (не применяя сложных условий) стоит использовать уже реализованные функции, в частности перегруженный вариант функции Directory.GetFiles с тремя параметрами:
&lt;/p&gt;
&lt;div class="code"&gt;&lt;p&gt;
Directory.GetFiles(_strPath, &amp;quot;*.*&amp;quot;, SearchOption.AllDirectories)
&lt;/p&gt;
&lt;/div&gt;&lt;p&gt;
P.S. Не забываем подключить&amp;nbsp; System.IO;&lt;br /&gt;
&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/FAQdotNet/~4/DC5nhXaYtRw" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/FAQdotNet/~3/DC5nhXaYtRw/post.aspx</link>
      <author>flame.nospam@nospam.faqdot.net (Flame)</author>
      <comments>http://faqdot.net/post/Get-All-Files-In-Directory.aspx#comment</comments>
      <guid isPermaLink="false">http://faqdot.net/post.aspx?id=df79d66d-33c8-4a95-a160-d1fb1b9bf14f</guid>
      <pubDate>Tue, 08 Sep 2009 17:58:00 +0400</pubDate>
      <category>FAQ С#</category>
      <dc:publisher>Flame</dc:publisher>
      <pingback:server>http://faqdot.net/pingback.axd</pingback:server>
      <pingback:target>http://faqdot.net/post.aspx?id=df79d66d-33c8-4a95-a160-d1fb1b9bf14f</pingback:target>
      <slash:comments>62</slash:comments>
      <trackback:ping>http://faqdot.net/trackback.axd?id=df79d66d-33c8-4a95-a160-d1fb1b9bf14f</trackback:ping>
      <wfw:comment>http://faqdot.net/post/Get-All-Files-In-Directory.aspx#comment</wfw:comment>
      <wfw:commentRss>http://faqdot.net/syndication.axd?post=df79d66d-33c8-4a95-a160-d1fb1b9bf14f</wfw:commentRss>
    <feedburner:origLink>http://faqdot.net/post.aspx?id=df79d66d-33c8-4a95-a160-d1fb1b9bf14f</feedburner:origLink></item>
    <item>
      <title>Как программно вставить изображение в Excel?</title>
      <description>&lt;p&gt;
Иногда возникает необходимость вставить изображение непосредственно в документ Excel, к сожалению именно в документ, по определенным координатам, а не в конкретную ячейку возможна вставка такого объекта. Далее описано два возможных способа программной вставки картинки.
&lt;/p&gt;

&lt;p&gt;
При помощи раннего связывания, т.е. используя обертки вокруг &amp;quot;внутренностей&amp;quot; Excel. Для этого нам необходимо подключить те же библиотеки, что и для чтения данных из Excel файлов. 
&lt;/p&gt;
&lt;div class="code"&gt;&lt;p&gt;
&lt;span class="kwrd"&gt;using&lt;/span&gt; Excel = Microsoft.Office.Interop.Excel;&lt;br /&gt;
&lt;span class="kwrd"&gt;using&lt;/span&gt; Office = Microsoft.Office.Core;&lt;br /&gt;
. . .&lt;br /&gt;
rg = m_workSheet.get_Range(&amp;quot;A&amp;quot; + 1, &amp;quot;A&amp;quot; + 1);&lt;br /&gt;
&lt;span class="kwrd"&gt;float&lt;/span&gt; il, it, iw, ih;&lt;br /&gt;
&lt;span class="kwrd"&gt;float&lt;/span&gt; zExcelPixel = 0.746835443f;&lt;span class="rem"&gt;// для приведения размеров изображения к размерам используемым в Shape&lt;br /&gt;&lt;/span&gt;
Image im = Image.FromFile(filePic);&lt;br /&gt;
&lt;span class="rem"&gt;// rg переменная хранящая ссылку на range относительно левого верхнего угла которого надо вставить изображение&lt;br /&gt;&lt;/span&gt;
&lt;span class="rem"&gt;// координата левого верхнего угола куда вставлять - находяться из range&lt;br /&gt;&lt;/span&gt;
il = (&lt;span class="kwrd"&gt;float&lt;/span&gt;)(&lt;span class="kwrd"&gt;double&lt;/span&gt;)rg.Left;&lt;span class="rem"&gt;// размеры поступают в double упакованый в object&lt;br /&gt;&lt;/span&gt;
it = (&lt;span class="kwrd"&gt;float&lt;/span&gt;)(&lt;span class="kwrd"&gt;double&lt;/span&gt;)rg.Top;&lt;br /&gt;
&lt;br /&gt;
&lt;span class="rem"&gt;// размеры изображения для Shape нужно преобразовывать&lt;br /&gt;&lt;/span&gt;
iw = zExcelPixel * im.Width;&lt;span class="rem"&gt;// получаем из ширины исходного изображения&lt;br /&gt;&lt;/span&gt;
ih = zExcelPixel * im.Height;&lt;br /&gt;
&lt;br /&gt;
&lt;span class="rem"&gt;// Увеличиваем высоту ячейки &lt;br /&gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;if&lt;/span&gt; (im.Height &amp;lt; 409)&lt;br /&gt;
rg.RowHeight = zExcelPixel * im.Height;&lt;br /&gt;
&lt;span class="kwrd"&gt;else&lt;/span&gt;&lt;br /&gt;
rg.RowHeight = 409;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;
m_workSheet.Shapes.AddPicture(filePic, Office.MsoTriState.msoFalse, Office.MsoTriState.msoTrue, il, it, iw, ih);&lt;br /&gt;
. . .
&lt;/p&gt;
&lt;/div&gt;&lt;p&gt;
С помощью позднего связывания (&lt;a rel="http://www.rsdn.ru/article/dotnet/ExcelNELateBinding.xml" href="http://www.rsdn.ru/article/dotnet/ExcelNELateBinding.xml" target="_blank" title="http://www.rsdn.ru/article/dotnet/ExcelNELateBinding.xml"&gt;подробнее о позднем связывании&lt;/a&gt;) 
&lt;/p&gt;
&lt;div class="code"&gt;&lt;p&gt;
&amp;hellip;&lt;br /&gt;
rg.Activate();&lt;span class="rem"&gt;//rg.Select();// rg переменная хранящая ссылку на range относительно левого верхнего угла которого надо вставить изображение&lt;br /&gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;object&lt;/span&gt; ob=worksSheet.GetType().InvokeMember(&amp;quot;Pictures&amp;quot;, BindingFlags.GetProperty, &lt;span class="kwrd"&gt;null&lt;/span&gt;, worksSheet, &lt;span class="kwrd"&gt;null&lt;/span&gt;);&lt;br /&gt;
ob.GetType().InvokeMember(&amp;quot;Insert&amp;quot;, BindingFlags.InvokeMethod, &lt;span class="kwrd"&gt;null&lt;/span&gt;, ob, &lt;span class="kwrd"&gt;new&lt;/span&gt; &lt;span class="kwrd"&gt;object&lt;/span&gt;[]{pathToPicFile});&lt;br /&gt;
&amp;hellip;&lt;br /&gt;
&lt;/p&gt;
&lt;/div&gt;&lt;p&gt;
Далее привожу полностью фрагмент кода вставляющий изображение в документ Excel: &amp;nbsp;
&lt;/p&gt;
&lt;div class="code"&gt;&lt;p&gt;
&lt;span class="kwrd"&gt;void&lt;/span&gt; InsertPicToExcel()&lt;br /&gt;
{&lt;br /&gt;
String filePic = @&amp;rdquo;d:\test.jpg&amp;rdquo;;&lt;br /&gt;
Excel._Application m_app = &lt;span class="kwrd"&gt;null&lt;/span&gt;;&lt;br /&gt;
&amp;nbsp;&lt;span class="rem"&gt;// Книга Excel.&lt;br /&gt;&lt;/span&gt;
&amp;nbsp;Excel.Workbook m_workBook = &lt;span class="kwrd"&gt;null&lt;/span&gt;;&lt;br /&gt;
&lt;span class="rem"&gt;// Страница Excel.&lt;br /&gt;&lt;/span&gt;
Excel.Worksheet m_workSheet = &lt;span class="kwrd"&gt;null&lt;/span&gt;;&lt;br /&gt;
&lt;span class="rem"&gt;//Диапазон ячеек&lt;br /&gt;&lt;/span&gt;
Excel.Range rg = &lt;span class="kwrd"&gt;null&lt;/span&gt;;&lt;br /&gt;
&lt;br /&gt;
&lt;span class="kwrd"&gt;try&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="rem"&gt;// Создание приложения Excel.&lt;br /&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; m_app = &lt;span class="kwrd"&gt;new&lt;/span&gt; Excel.ApplicationClass();&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="rem"&gt;// Приложение &amp;quot;невидимо&amp;quot;.&lt;br /&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; m_app.Visible = &lt;span class="kwrd"&gt;false&lt;/span&gt;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="rem"&gt;// Приложение управляется пользователем.&lt;br /&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; m_app.UserControl = &lt;span class="kwrd"&gt;true&lt;/span&gt;;&lt;br /&gt;
&lt;br /&gt;
&lt;span class="rem"&gt;// Добавление книги Excel.&lt;br /&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="rem"&gt;// m_workBook = m_app.Workbooks.Add(Excel.XlWBATemplate.xlWBATWorksheet);&lt;br /&gt;&lt;/span&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="rem"&gt;// Открытие файла Excel.&lt;br /&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; m_workBook = m_app.Workbooks.Open(@&amp;quot;D:\test.xlsx&amp;quot;, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="rem"&gt;// Связь со страницей Excel.&lt;br /&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; m_workSheet = m_app.ActiveSheet &lt;span class="kwrd"&gt;as&lt;/span&gt; Excel.Worksheet;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &lt;span class="preproc"&gt;#region&lt;/span&gt; Вставка картинок&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; rg = m_workSheet.get_Range(&amp;quot;A&amp;quot; + 1, &amp;quot;A&amp;quot; + 1);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;float&lt;/span&gt; il, it, iw, ih;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;float&lt;/span&gt; zExcelPixel = 0.746835443f;&lt;span class="rem"&gt;// для приведения размеров изображения к размерам используемым в Shape&lt;br /&gt;&lt;/span&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Image im = Image.FromFile(filePic);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="rem"&gt;// rg переменная хранящая ссылку на range относительно левого верхнего угла которого надо вставить изображение&lt;br /&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="rem"&gt;// координата левого верхнего угола куда вставлять - находяться из range&lt;br /&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; il = (&lt;span class="kwrd"&gt;float&lt;/span&gt;)(&lt;span class="kwrd"&gt;double&lt;/span&gt;)rg.Left;&lt;span class="rem"&gt;// размеры поступают в double упакованый в object&lt;br /&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; it = (&lt;span class="kwrd"&gt;float&lt;/span&gt;)(&lt;span class="kwrd"&gt;double&lt;/span&gt;)rg.Top;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="rem"&gt;// размеры изображения для Shape нужно преобразовывать&lt;br /&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; iw = zExcelPixel * im.Width;&lt;span class="rem"&gt;// получаем из ширины исходного изображения&lt;br /&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ih = zExcelPixel * im.Height;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;span class="rem"&gt;// Увеличиваем высоту ячейки &lt;br /&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;if&lt;/span&gt; (im.Height &amp;lt; 409)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;rg.RowHeight = zExcelPixel * im.Height;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;else&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;rg.RowHeight = 409;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; m_workSheet.Shapes.AddPicture(filePic, Office.MsoTriState.msoFalse, Office.MsoTriState.msoTrue, il, it, iw, ih);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #endregion&lt;br /&gt;
}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;finally&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="rem"&gt;// Сохраняем файл с вставленным изображением&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; m_workBook.SaveCopyAs(@&amp;quot;d:\testPic.xlsx&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="rem"&gt;// Закрытие книги.&lt;br /&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; m_workBook.Close(&lt;span class="kwrd"&gt;false&lt;/span&gt;, &amp;quot;&amp;quot;, &lt;span class="kwrd"&gt;null&lt;/span&gt;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="rem"&gt;// Закрытие приложения Excel.&lt;br /&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; m_app.Quit();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; m_workBook = &lt;span class="kwrd"&gt;null&lt;/span&gt;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; m_workSheet = &lt;span class="kwrd"&gt;null&lt;/span&gt;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; m_app = &lt;span class="kwrd"&gt;null&lt;/span&gt;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; GC.Collect();&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
}
&lt;/p&gt;
&lt;/div&gt;&lt;p&gt;
По материалам GotDotNet.ru 
&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/FAQdotNet/~4/rURGHH69BWc" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/FAQdotNet/~3/rURGHH69BWc/post.aspx</link>
      <author>flame.nospam@nospam.faqdot.net (Flame)</author>
      <comments>http://faqdot.net/post/insert-picture-in-excel.aspx#comment</comments>
      <guid isPermaLink="false">http://faqdot.net/post.aspx?id=4e445550-690a-4abd-ad7f-57af93b167af</guid>
      <pubDate>Fri, 07 Aug 2009 10:14:00 +0400</pubDate>
      <category>FAQ С#</category>
      <dc:publisher>Flame</dc:publisher>
      <pingback:server>http://faqdot.net/pingback.axd</pingback:server>
      <pingback:target>http://faqdot.net/post.aspx?id=4e445550-690a-4abd-ad7f-57af93b167af</pingback:target>
      <slash:comments>162</slash:comments>
      <trackback:ping>http://faqdot.net/trackback.axd?id=4e445550-690a-4abd-ad7f-57af93b167af</trackback:ping>
      <wfw:comment>http://faqdot.net/post/insert-picture-in-excel.aspx#comment</wfw:comment>
      <wfw:commentRss>http://faqdot.net/syndication.axd?post=4e445550-690a-4abd-ad7f-57af93b167af</wfw:commentRss>
    <feedburner:origLink>http://faqdot.net/post.aspx?id=4e445550-690a-4abd-ad7f-57af93b167af</feedburner:origLink></item>
    <item>
      <title>Как прочитать данные из Excel файла?</title>
      <description>&lt;p&gt;
Если необходимо просто получить несколько записей из Excel файла, то стоит воспользоваться ранним связыванием. Для этого необходимо подключить Microsoft.Office.Interop.Excel.dll и Office.dll. 
&lt;/p&gt;
&lt;p&gt;
 
&lt;/p&gt;
&lt;p&gt;
Вот один из способов: 
&lt;/p&gt;
&lt;div class="code"&gt;&lt;p&gt;
&lt;span class="kwrd"&gt;using&lt;/span&gt; Excel = Microsoft.Office.Interop.Excel;&lt;br /&gt;
&lt;span class="kwrd"&gt;using&lt;/span&gt; Office = Microsoft.Office.Core;&lt;br /&gt;
. . .&lt;br /&gt;
&lt;span class="kwrd"&gt;try&lt;/span&gt;&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;_conn.Open();&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;span class="rem"&gt;// Создание приложения Excel.&lt;br /&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;m_app = &lt;span class="kwrd"&gt;new&lt;/span&gt; Excel.ApplicationClass();&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;Excel.Range rg = &lt;span class="kwrd"&gt;null&lt;/span&gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;span class="rem"&gt;// Приложение &amp;quot;невидимо&amp;quot;.&lt;br /&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;m_app.Visible = &lt;span class="kwrd"&gt;false&lt;/span&gt;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;span class="rem"&gt;// Приложение управляется пользователем.&lt;br /&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;m_app.UserControl = &lt;span class="kwrd"&gt;true&lt;/span&gt;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;span class="rem"&gt;// Добавление книги Excel.&lt;br /&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;m_workBook = m_app.Workbooks.Open(@&amp;quot;D:\test.xlsx&amp;quot;, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, &amp;nbsp;&amp;nbsp; &amp;nbsp;Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;span class="rem"&gt;// Связь со страницей Excel.&lt;br /&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;m_workSheet = m_app.ActiveSheet &lt;span class="kwrd"&gt;as&lt;/span&gt; Excel.Worksheet;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;Int32 row = 1;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;List&amp;lt;String&amp;gt; arr = &lt;span class="kwrd"&gt;new&lt;/span&gt; List&amp;lt;&lt;span class="kwrd"&gt;string&lt;/span&gt;&amp;gt;(); &lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;span class="kwrd"&gt;while&lt;/span&gt; (m_workSheet.get_Range(&amp;quot;a&amp;quot; + row, &amp;quot;a&amp;quot; + row).Value2 != &lt;span class="kwrd"&gt;null&lt;/span&gt;)&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;. . .&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;span class="rem"&gt;// Читаем данные из ячейки&lt;br /&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;Arr.Add( m_workSheet.get_Range(&amp;quot;a&amp;quot; + row, &amp;quot;a&amp;quot; + row).Value2.ToString().Trim());&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;row++;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;. . .&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;
}&lt;br /&gt;
&lt;span class="kwrd"&gt;finally&lt;/span&gt;&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;span class="rem"&gt;// Закрытие книги.&lt;br /&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;m_workBook.Close(&lt;span class="kwrd"&gt;false&lt;/span&gt;, &amp;quot;&amp;quot;, &lt;span class="kwrd"&gt;null&lt;/span&gt;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;span class="rem"&gt;// Закрытие приложения Excel.&lt;br /&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;m_app.Quit();&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;m_workBook = &lt;span class="kwrd"&gt;null&lt;/span&gt;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;m_workSheet = &lt;span class="kwrd"&gt;null&lt;/span&gt;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;m_app = &lt;span class="kwrd"&gt;null&lt;/span&gt;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;GC.Collect();&lt;br /&gt;
}
&lt;/p&gt;
&lt;/div&gt;&lt;p&gt;
Для более детального изучения данной темы, рекомендую ознакомиться со следующими статьями:&lt;br /&gt;
&lt;a href="http://www.gotdotnet.ru/LearnDotNet/NETFramework/22054.aspx" title="http://www.gotdotnet.ru/LearnDotNet/NETFramework/22054.aspx"&gt;Объектная модель Excel с точки зрения разработчика под .NET&lt;/a&gt;&lt;br /&gt;
&lt;a rel="http://www.sql.ru/forum/actualthread.aspx?tid=620401&amp;amp;pg=-1" href="http://www.sql.ru/forum/actualthread.aspx?tid=620401&amp;amp;pg=-1" title="http://www.sql.ru/forum/actualthread.aspx?tid=620401&amp;amp;pg=-1"&gt;http://www.sql.ru&lt;/a&gt;&lt;br /&gt;
&lt;a rel="http://www.rsdn.ru/article/dotnet/ExcelNELateBinding.xml" href="http://www.rsdn.ru/article/dotnet/ExcelNELateBinding.xml" title="http://www.rsdn.ru/article/dotnet/ExcelNELateBinding.xml"&gt;http://www.rsdn.ru&lt;/a&gt;&lt;br /&gt;
&lt;a rel="http://msdn.microsoft.com/en-us/library/78whx7s6(VS.80).aspx " href="http://msdn.microsoft.com/en-us/library/78whx7s6(VS.80).aspx" title="http://msdn.microsoft.com/en-us/library/78whx7s6(VS.80).aspx "&gt;http://msdn.microsoft.com
&lt;/a&gt;
&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/FAQdotNet/~4/PtUSnXiaGn0" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/FAQdotNet/~3/PtUSnXiaGn0/post.aspx</link>
      <author>flame.nospam@nospam.faqdot.net (Flame)</author>
      <comments>http://faqdot.net/post/Excel-read.aspx#comment</comments>
      <guid isPermaLink="false">http://faqdot.net/post.aspx?id=4dd84484-895d-4a19-b2c7-94126e6b3a29</guid>
      <pubDate>Tue, 14 Jul 2009 10:02:00 +0400</pubDate>
      <category>FAQ С#</category>
      <dc:publisher>Flame</dc:publisher>
      <pingback:server>http://faqdot.net/pingback.axd</pingback:server>
      <pingback:target>http://faqdot.net/post.aspx?id=4dd84484-895d-4a19-b2c7-94126e6b3a29</pingback:target>
      <slash:comments>113</slash:comments>
      <trackback:ping>http://faqdot.net/trackback.axd?id=4dd84484-895d-4a19-b2c7-94126e6b3a29</trackback:ping>
      <wfw:comment>http://faqdot.net/post/Excel-read.aspx#comment</wfw:comment>
      <wfw:commentRss>http://faqdot.net/syndication.axd?post=4dd84484-895d-4a19-b2c7-94126e6b3a29</wfw:commentRss>
    <feedburner:origLink>http://faqdot.net/post.aspx?id=4dd84484-895d-4a19-b2c7-94126e6b3a29</feedburner:origLink></item>
    <item>
      <title>Как прочитать данные из реестра?</title>
      <description>&lt;p&gt;
Для того что бы прочитать данные из реестра Windows, например узнать куда установлен MapInfo, необходимо: 
&lt;/p&gt;
&lt;div class="code"&gt;&lt;p&gt;
&lt;span class="kwrd"&gt;using&lt;/span&gt; Microsoft.Win32;&lt;br /&gt;
&lt;span class="kwrd"&gt;private&lt;/span&gt; String FRegisterKey = @&amp;quot;SOFTWARE\MapInfo\MapInfo\Professional&amp;quot;&lt;br /&gt;
&lt;span class="kwrd"&gt;private&lt;/span&gt; String FKeyValue = @&amp;quot;ProgramDirectory&amp;quot;&lt;br /&gt;
...&lt;br /&gt;
&lt;span class="kwrd"&gt;if&lt;/span&gt; (Registry.LocalMachine.OpenSubKey(FRegisterKey) != &lt;span class="kwrd"&gt;null&lt;/span&gt;)&lt;br /&gt;
{&lt;br /&gt;
InfoPath = Registry.LocalMachine.OpenSubKey(FRegisterKey).GetValue(FKeyValue).ToString();&lt;br /&gt;
...&lt;br /&gt;
}&lt;br /&gt;
&lt;/p&gt;
&lt;/div&gt;&lt;p&gt;
Что бы записать значение:
&lt;/p&gt;
&lt;div class="code"&gt;&lt;p&gt;
Registry.LocalMachine.OpenSubKey([PathToSubKey]).SetValue([Param], [Value]); 
&lt;/p&gt;
&lt;/div&gt;&lt;p&gt;
P.S. Подробнее &lt;a href="http://msdn.microsoft.com/ru-ru/library/microsoft.win32.registry.aspx"&gt;тут&lt;/a&gt;
&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/FAQdotNet/~4/ptCR7Mo1xss" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/FAQdotNet/~3/ptCR7Mo1xss/post.aspx</link>
      <author>flame.nospam@nospam.faqdot.net (Flame)</author>
      <comments>http://faqdot.net/post/read-key-reestr.aspx#comment</comments>
      <guid isPermaLink="false">http://faqdot.net/post.aspx?id=9005b4e0-ad16-45df-9cff-c87adc17c543</guid>
      <pubDate>Sun, 28 Jun 2009 02:04:00 +0400</pubDate>
      <category>FAQ С#</category>
      <dc:publisher>Flame</dc:publisher>
      <pingback:server>http://faqdot.net/pingback.axd</pingback:server>
      <pingback:target>http://faqdot.net/post.aspx?id=9005b4e0-ad16-45df-9cff-c87adc17c543</pingback:target>
      <slash:comments>72</slash:comments>
      <trackback:ping>http://faqdot.net/trackback.axd?id=9005b4e0-ad16-45df-9cff-c87adc17c543</trackback:ping>
      <wfw:comment>http://faqdot.net/post/read-key-reestr.aspx#comment</wfw:comment>
      <wfw:commentRss>http://faqdot.net/syndication.axd?post=9005b4e0-ad16-45df-9cff-c87adc17c543</wfw:commentRss>
    <feedburner:origLink>http://faqdot.net/post.aspx?id=9005b4e0-ad16-45df-9cff-c87adc17c543</feedburner:origLink></item>
    <item>
      <title>Как изменить кодировку строк?</title>
      <description>&lt;p&gt;
Для преобразования строки из одной кодировки в другую в .Net используется класс &lt;strong&gt;System.Text.Encoding&lt;/strong&gt;.
&lt;/p&gt;
&lt;p&gt;
Например, нам необходимо &lt;a rel="http://faqdot.net/post/read-text-from-file.aspx" href="http://faqdot.net/post/read-text-from-file.aspx" title="http://faqdot.net/post/read-text-from-file.aspx"&gt;прочитать текстовый файл&lt;/a&gt;, но мы знаем, что текст в нем хранится в кодировке Win1251. &lt;br /&gt;
Вот пример как это можно сделать:
&lt;/p&gt;
&lt;div class="code"&gt;&lt;p&gt;
&amp;nbsp;&lt;span class="kwrd"&gt;using&lt;/span&gt; (StreamReader _sr = &lt;span class="kwrd"&gt;new&lt;/span&gt; StreamReader(aFileInfo.FullName, Encoding.GetEncoding(1251)))&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;String _strTmp = _sr.ReadLine()&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;. . .&lt;br /&gt;
}
&lt;/p&gt;
&lt;/div&gt;&lt;p&gt;
Но теперь надо &lt;a rel="http://faqdot.net/post/Write-Error-Log.aspx" href="http://faqdot.net/post/Write-Error-Log.aspx" title="http://faqdot.net/post/Write-Error-Log.aspx"&gt;сохранить изменения&lt;/a&gt; в тойже кодировке. &lt;br /&gt;
Это можно сделать вот так:
&lt;/p&gt;
&lt;div class="code"&gt;&lt;p&gt;
&lt;span class="kwrd"&gt;using&lt;/span&gt; (StreamWriter tw = &lt;span class="kwrd"&gt;new&lt;/span&gt; StreamWriter(aWriteFile.Create(), Encoding.GetEncoding(1251)))&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="rem"&gt;// Записываем шапку&lt;br /&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; tw.WriteLine(String.Format(&amp;quot;Проверка записи в кодировке Win1251&amp;quot;));&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; . . .&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; tw.Close();&lt;br /&gt;
} 
&lt;/p&gt;
&lt;/div&gt;&lt;p&gt;
P.S. Подробнее &lt;a rel="http://msdn.microsoft.com/ru-ru/library/zs0350fy.aspx" href="http://msdn.microsoft.com/ru-ru/library/zs0350fy.aspx" title="http://msdn.microsoft.com/ru-ru/library/zs0350fy.aspx"&gt;тут &lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
P.P.S. И еще &lt;a href="http://local.joelonsoftware.com/wiki/%D0%90%D0%B1%D1%81%D0%BE%D0%BB%D1%8E%D1%82%D0%BD%D1%8B%D0%B9_%D0%9C%D0%B8%D0%BD%D0%B8%D0%BC%D1%83%D0%BC%2C_%D0%BA%D0%BE%D1%82%D0%BE%D1%80%D1%8B%D0%B9_%D0%9A%D0%B0%D0%B6%D0%B4%D1%8B%D0%B9_%D0%A0%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%87%D0%B8%D0%BA_%D0%9F%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE_%D0%9E%D0%B1%D0%B5%D1%81%D0%BF%D0%B5%D1%87%D0%B5%D0%BD%D0%B8%D1%8F_%D0%9E%D0%B1%D1%8F%D0%B7%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE_%D0%94%D0%BE%D0%BB%D0%B6%D0%B5%D0%BD_%D0%97%D0%BD%D0%B0%D1%82%D1%8C_%D0%BE_Unicode_%D0%B8_%D0%9D%D0%B0%D0%B1%D0%BE%D1%80%D0%B0%D1%85_%D0%A1%D0%B8%D0%BC%D0%B2%D0%BE%D0%BB%D0%BE%D0%B2"&gt;статья&amp;nbsp; Джоела Спольски о кодировках&lt;/a&gt;
&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/FAQdotNet/~4/4PLEWXb7dUQ" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/FAQdotNet/~3/4PLEWXb7dUQ/post.aspx</link>
      <author>flame.nospam@nospam.faqdot.net (Flame)</author>
      <comments>http://faqdot.net/post/Encoding-String.aspx#comment</comments>
      <guid isPermaLink="false">http://faqdot.net/post.aspx?id=36c192d2-f951-4e91-ab38-4bbc38047fd1</guid>
      <pubDate>Tue, 23 Jun 2009 17:06:00 +0400</pubDate>
      <category>FAQ С#</category>
      <dc:publisher>Flame</dc:publisher>
      <pingback:server>http://faqdot.net/pingback.axd</pingback:server>
      <pingback:target>http://faqdot.net/post.aspx?id=36c192d2-f951-4e91-ab38-4bbc38047fd1</pingback:target>
      <slash:comments>94</slash:comments>
      <trackback:ping>http://faqdot.net/trackback.axd?id=36c192d2-f951-4e91-ab38-4bbc38047fd1</trackback:ping>
      <wfw:comment>http://faqdot.net/post/Encoding-String.aspx#comment</wfw:comment>
      <wfw:commentRss>http://faqdot.net/syndication.axd?post=36c192d2-f951-4e91-ab38-4bbc38047fd1</wfw:commentRss>
    <feedburner:origLink>http://faqdot.net/post.aspx?id=36c192d2-f951-4e91-ab38-4bbc38047fd1</feedburner:origLink></item>
    <item>
      <title>Как изменить региональные настройки?</title>
      <description>&lt;p&gt;
А конкретнее, &lt;strong&gt;как преобразовать строку в число&lt;/strong&gt; или &lt;strong&gt;как заменить точку на запятую&lt;/strong&gt;, например &amp;quot;2.56&amp;quot;, если разделитель разрядов в системе запятая.
&lt;/p&gt;
&lt;h5&gt;&lt;strong&gt;Мнимое решение&lt;/strong&gt;&lt;/h5&gt;
&lt;div class="code"&gt;&lt;p&gt;
Double tmp = Double.Parse(str.Replace(&amp;#39;.&amp;#39;, &amp;#39;,&amp;#39;));
&lt;/p&gt;
&lt;/div&gt;&lt;p&gt;
т.к. если в системе по умолчанию установленна точка а не запятая то мы опять получим исключение.&lt;br /&gt;
 
&lt;/p&gt;
&lt;h5&gt;&lt;strong&gt;Работающее решение&lt;/strong&gt;&lt;/h5&gt;
&lt;p&gt;
Сначала мы пытаемся превратить строку в число с помощью текущих &lt;strong&gt;региональных настроек&lt;/strong&gt;, если не удается заменяем точки в строке на запятые 
&lt;/p&gt;
&lt;div class="code"&gt;&lt;p&gt;
Double tmp;&lt;br /&gt;
&lt;span class="kwrd"&gt;if&lt;/span&gt; (Double.TryParse(str, &lt;span class="kwrd"&gt;out&lt;/span&gt; tmp) == &lt;span class="kwrd"&gt;false&lt;/span&gt;)&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;Double.TryParse(str.Replace(&amp;#39;.&amp;#39;, &amp;#39;,&amp;#39;), &lt;span class="kwrd"&gt;out&lt;/span&gt; tmp);&lt;br /&gt;
}
&lt;/p&gt;
&lt;/div&gt;&lt;h5&gt;&lt;strong&gt;Улучшенное работающее решение&lt;/strong&gt;&lt;/h5&gt;
&lt;p&gt;
В данном случае мы сначала подготавливаем строку, потом пытаемся превратить её в число если не удается то мы меняем не строку а &lt;strong&gt;параметры региональных настроек&lt;/strong&gt; 
&lt;/p&gt;
&lt;div class="code"&gt;&lt;p&gt;
&lt;span class="preproc"&gt;#region&lt;/span&gt; GetDoubleFromString(String aStr)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; Double GetDoubleFromString(String aStr)&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="rem"&gt;// Подготавливаем строку&lt;br /&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; aStr = aStr.Trim(&lt;span class="kwrd"&gt;new&lt;/span&gt; &lt;span class="kwrd"&gt;char&lt;/span&gt;[] {&amp;#39;(&amp;#39;, &amp;#39;)&amp;#39;, &amp;#39; &amp;#39;});&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="rem"&gt;// Временная переменная&lt;br /&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Double tmpd = 0;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="rem"&gt;// Получаем текущие настройки&lt;br /&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; var format = &lt;span class="kwrd"&gt;new&lt;/span&gt; System.Globalization.NumberFormatInfo();&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="rem"&gt;// Пытаемся преобразовать строку в число&lt;br /&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;if&lt;/span&gt; (!Double.TryParse(aStr, NumberStyles.Float, format, &lt;span class="kwrd"&gt;out&lt;/span&gt; tmpd))&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;if&lt;/span&gt; (format.NumberDecimalSeparator == &amp;quot;,&amp;quot;)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; format.NumberDecimalSeparator = &amp;quot;.&amp;quot;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;else&lt;/span&gt; &lt;span class="kwrd"&gt;if&lt;/span&gt; (format.NumberDecimalSeparator == &amp;quot;.&amp;quot;)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; format.NumberDecimalSeparator = &amp;quot;,&amp;quot;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="rem"&gt;// Если всеравно не удалось то возвращаем -1&lt;br /&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;if&lt;/span&gt; (!Double.TryParse(aStr, NumberStyles.Float, format, &lt;span class="kwrd"&gt;out&lt;/span&gt; tmpd))&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;return&lt;/span&gt; -1;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;return&lt;/span&gt; tmpd;&lt;br /&gt;
}&lt;br /&gt;
&lt;span class="preproc"&gt;#endregion&lt;/span&gt;
&lt;/p&gt;
&lt;/div&gt;&lt;p&gt;
P.S. Таким образом замена точки в строке, при преобразовании строки в число, была решена окончательно :) 
&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/FAQdotNet/~4/5HFq_ady7X0" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/FAQdotNet/~3/5HFq_ady7X0/post.aspx</link>
      <author>flame.nospam@nospam.faqdot.net (Flame)</author>
      <comments>http://faqdot.net/post/Regional-settings.aspx#comment</comments>
      <guid isPermaLink="false">http://faqdot.net/post.aspx?id=28ba2ddc-4ad0-4c77-b0a9-d4130dae71ea</guid>
      <pubDate>Sun, 21 Jun 2009 10:11:00 +0400</pubDate>
      <category>FAQ С#</category>
      <dc:publisher>Flame</dc:publisher>
      <pingback:server>http://faqdot.net/pingback.axd</pingback:server>
      <pingback:target>http://faqdot.net/post.aspx?id=28ba2ddc-4ad0-4c77-b0a9-d4130dae71ea</pingback:target>
      <slash:comments>88</slash:comments>
      <trackback:ping>http://faqdot.net/trackback.axd?id=28ba2ddc-4ad0-4c77-b0a9-d4130dae71ea</trackback:ping>
      <wfw:comment>http://faqdot.net/post/Regional-settings.aspx#comment</wfw:comment>
      <wfw:commentRss>http://faqdot.net/syndication.axd?post=28ba2ddc-4ad0-4c77-b0a9-d4130dae71ea</wfw:commentRss>
    <feedburner:origLink>http://faqdot.net/post.aspx?id=28ba2ddc-4ad0-4c77-b0a9-d4130dae71ea</feedburner:origLink></item>
    <item>
      <title>Как обновить программу?</title>
      <description>&lt;p&gt;
Простым вариантом обновления программы может служить bat файл который будет копировать содержимое сетевой папки в локальную, но после него остается командное окно которое портит общий вид...
&lt;/p&gt;
&lt;p&gt;
Альтернативным способом может быть копирование необходимых файлов самой программой при запуске, но заменить запущенное приложение не получится, поэтому необходимо вынести функциональность которая копирует файлы в отдельный проект и из него после копирования запускать основное приложение.
&lt;/p&gt;
&lt;p&gt;
Сначала настроим глобальные переменные (правильнее их &lt;a rel="http://faqdot.net/post/Read-Write-XML.aspx" href="http://faqdot.net/post/Read-Write-XML.aspx" title="http://faqdot.net/post/Read-Write-XML.aspx"&gt;получать из xml файла&lt;/a&gt;)
&lt;/p&gt;
&lt;div class="code"&gt;&lt;p&gt;
&lt;span class="preproc"&gt;#region&lt;/span&gt; Data&lt;br /&gt;
&lt;span class="rem"&gt;// Папка с обновлениями&lt;br /&gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;private&lt;/span&gt; String FUpdateFolder = @&amp;quot;\\srv\myprog&amp;quot;;&lt;br /&gt;
&lt;span class="rem"&gt;// Куда копируем&lt;br /&gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;private&lt;/span&gt; String FTargetFolder;&lt;br /&gt;
&lt;span class="rem"&gt;// Что запускаем&lt;br /&gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;private&lt;/span&gt; String FRunFile = &amp;quot;myprog.exe&amp;quot;;&lt;br /&gt;
#endregion&lt;br /&gt;
&lt;/p&gt;
&lt;/div&gt;&lt;p&gt;
 А теперь простоскопируем все файлы из указанной сетевой папки и запустим наше основное приложение 
&lt;/p&gt;
&lt;div class="code"&gt;&lt;p&gt;
&lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Form1_Load(&lt;span class="kwrd"&gt;object&lt;/span&gt; sender, EventArgs e)&lt;br /&gt;
{&lt;br /&gt;
...&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="rem"&gt;// Проверить доступность сетевого пути&lt;br /&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; DirectoryInfo _dirUpdate = &lt;span class="kwrd"&gt;new&lt;/span&gt; DirectoryInfo(FUpdateFolder);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; DirectoryInfo _dirMapInfo;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;if&lt;/span&gt; (!_dirUpdate.Exists)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; MessageBox.Show(&amp;quot;Неудалось получить доступ к &amp;quot; + FUpdateFolder, &amp;quot;Внимание!&amp;quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;return&lt;/span&gt;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; pbRuner.Maximum = _dirUpdate.GetFiles().Count();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; pbRuner.Value = 0;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="rem"&gt;// Копируем файлы &lt;br /&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;try&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (var file &lt;span class="kwrd"&gt;in&lt;/span&gt; _dirUpdate.GetFiles())&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; pbRuner.Value++;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; file.CopyTo(FTargetFolder + @&amp;quot;\&amp;quot; + file.Name, &lt;span class="kwrd"&gt;true&lt;/span&gt;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;catch&lt;/span&gt; (Exception ex)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; MessageBox.Show(&amp;quot;Один из копируемых файлов скорее всего открыт. \n&amp;quot; + ex.ToString(), &amp;quot;Внимание!&amp;quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;return&lt;/span&gt;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&lt;span class="rem"&gt;// Запустить основную программу&lt;br /&gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;try&lt;/span&gt;&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Process.Start(FTargetFolder + @&amp;quot;\&amp;quot; + FRunFile);&lt;br /&gt;
}&lt;br /&gt;
&lt;span class="kwrd"&gt;catch&lt;/span&gt; (Exception ex)&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; MessageBox.Show(ex.ToString());&lt;br /&gt;
}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;...&lt;br /&gt;
}
&lt;/p&gt;
&lt;/div&gt;&lt;p&gt;
Таким образом при каждом запуске этого простого приложения будет происходить копирование и запуск указанной в глобальных переменных программы, что позволит нам очень просто следить за актуальностью основной программы.
&lt;/p&gt;
&lt;p&gt;
P.S. Если описанной функциональности не достаточно, то тогда уже стоит обратить внимание на такую технологию как &lt;a rel="http://www.rsdn.ru/article/dotnet/WinForms20.xml#EY1BG" href="http://www.rsdn.ru/article/dotnet/WinForms20.xml#EY1BG" title="http://www.rsdn.ru/article/dotnet/WinForms20.xml#EY1BG"&gt;ClickOnce&lt;/a&gt;. 
&lt;/p&gt;
&lt;p&gt;
P.P.S. Еще ссылки&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://habrahabr.ru/blogs/net/72227/" title="http://habrahabr.ru/blogs/net/72227/"&gt;http://habrahabr.ru/blogs/net/72227/&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://msdn.microsoft.com/ru-ru/vbasic/ms789088.aspx" title="http://msdn.microsoft.com/ru-ru/vbasic/ms789088.aspx"&gt;http://msdn.microsoft.com/ru-ru/vbasic/ms789088.aspx&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://riotlabs.ru/blog/post/ClickOnce_Tecnology.aspx" title="http://riotlabs.ru/blog/post/ClickOnce_Tecnology.aspx"&gt;http://riotlabs.ru/blog/post/ClickOnce_Tecnology.aspx&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.techdays.ru/videos/1274.html" title="http://www.techdays.ru/videos/1274.html"&gt;http://www.techdays.ru/videos/1274.html &lt;/a&gt;
&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/FAQdotNet/~4/5BR-PaJnQ5U" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/FAQdotNet/~3/5BR-PaJnQ5U/post.aspx</link>
      <author>flame.nospam@nospam.faqdot.net (Flame)</author>
      <comments>http://faqdot.net/post/HowUpdateApplication.aspx#comment</comments>
      <guid isPermaLink="false">http://faqdot.net/post.aspx?id=c9c97796-ecd5-49ad-98bd-6cc18a5d8cd8</guid>
      <pubDate>Tue, 16 Jun 2009 15:35:00 +0400</pubDate>
      <category>FAQ С#</category>
      <dc:publisher>Flame</dc:publisher>
      <pingback:server>http://faqdot.net/pingback.axd</pingback:server>
      <pingback:target>http://faqdot.net/post.aspx?id=c9c97796-ecd5-49ad-98bd-6cc18a5d8cd8</pingback:target>
      <slash:comments>31</slash:comments>
      <trackback:ping>http://faqdot.net/trackback.axd?id=c9c97796-ecd5-49ad-98bd-6cc18a5d8cd8</trackback:ping>
      <wfw:comment>http://faqdot.net/post/HowUpdateApplication.aspx#comment</wfw:comment>
      <wfw:commentRss>http://faqdot.net/syndication.axd?post=c9c97796-ecd5-49ad-98bd-6cc18a5d8cd8</wfw:commentRss>
    <feedburner:origLink>http://faqdot.net/post.aspx?id=c9c97796-ecd5-49ad-98bd-6cc18a5d8cd8</feedburner:origLink></item>
  </channel>
</rss>

