<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://www.dotnetzone.gr:443/cs/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Πρώτα Βήματα - Desktop Applications</title><link>https://www.dotnetzone.gr:443/cs/forums/80/ShowForum.aspx</link><description>Θέματα για όσους φτιάχνουν τα πρώτα τους Desktop Applications σε .NET Framework</description><dc:language>el</dc:language><generator>CommunityServer 2.1 SP3 (Build: 20423.1)</generator><item><title>Απ: Streams!</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/41706.aspx</link><pubDate>Thu, 24 Apr 2008 08:12:36 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:41706</guid><dc:creator>JohnL</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/41706.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=80&amp;PostID=41706</wfw:commentRss><description>OK έχεις δίκιο. Απλά δεν θυμόμουν ακριβώς τι είχα γράψει στην αρχή! &lt;img src="http://www.dotnetzone.gr/cs/emoticons/emotion-1.gif" alt="Smile" /&gt;&lt;br&gt;&lt;br&gt;Όσον αφορά την ταχύτητα συνέκρινα τον παραπάνω αλγόριθμο με το Image.Save μόνο, με τη μεταφορά του αρχείου να υπάρχει και στα δύο ίδια. Αλλά μάλλον ήταν η εντύπωσή μου...&lt;br&gt;&lt;br&gt;Τελικά επέλεξα να το κατεβάζω απλά 2η φορά, γιατι είναι πολύ λίγες οι εικόνες που θέλουν αποθήκευση, και νομίζω ότι θα καθυστερούσε με τις άπειρες μεταφορές σε MemoryStream...&lt;br&gt;</description></item><item><title>Απ: Streams!</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/41705.aspx</link><pubDate>Thu, 24 Apr 2008 08:01:20 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:41705</guid><dc:creator>Dimitris Papadimitriou</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/41705.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=80&amp;PostID=41705</wfw:commentRss><description>&lt;p&gt;Η ερώτησή σου ήταν η εξής:&lt;/p&gt;&lt;p&gt;&lt;BLOCKQUOTE&gt;&lt;div&gt;&lt;img src="http://www.dotnetzone.gr/cs/Themes/default/images/icon-quote.gif"&gt; &lt;strong&gt;JohnL:&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;Θέλω να κάνω download ένα αρχείο από το internet
χρησιμοποιώντας το HttpWebRequest και να το γράφω binary στο
δίσκο....&lt;/div&gt;&lt;/BLOCKQUOTE&gt;&lt;/p&gt;&lt;p&gt;Τώρα την αλλάζεις! Εννοείται ότι τότε πρέπει να χρησιμοποιήσεις MemoryStream. Και μετά το MemoryStream θα το γράψεις πάλι σε κομμάτια στο FileStream, αφού κάνεις τον έλεγχο που θέλεις.&lt;/p&gt;&lt;p&gt;Απο πλευράς ταχύτητας, άλλο είναι να κατεβάζεις ένα αρχείο από ένα network stream και άλλο να κάνεις Image.Save. Φυσικά το 2ο είναι πιο γρήγορο.&amp;nbsp;&lt;/p&gt;</description></item><item><title>Απ: Streams!</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/41704.aspx</link><pubDate>Thu, 24 Apr 2008 07:50:17 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:41704</guid><dc:creator>JohnL</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/41704.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=80&amp;PostID=41704</wfw:commentRss><description>Χρησιμοποιώ την Image.FromStream(stream) για να ελέγξω κάποιες παραμέτρους της εικόνας και μόνο αν αυτές είναι σωστές τη γράφω στο δίσκο.&lt;br&gt;&lt;br&gt;Επειδή όμως το stream έχει φτάσει στο τέλος (λόγω της FromStream), πρέπει να το γυρίσω στην αρχή, κάτι που δε γίνεται καθώς τα ConnectStreams δεν υποστηρίζουν Seek!&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;Επίσης, από πλευράς ταχύτητας γίνεται κάτι καλύτερο? Σε σχεση με την Image.Save() είναι σημαντικά πιο αργή...&lt;br&gt;</description></item><item><title>Απ: Streams!</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/41703.aspx</link><pubDate>Thu, 24 Apr 2008 07:38:41 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:41703</guid><dc:creator>Dimitris Papadimitriou</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/41703.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=80&amp;PostID=41703</wfw:commentRss><description>&lt;p&gt;Χαίρομαι που σου άρεσε η παρουσίαση!&amp;nbsp;&lt;/p&gt;&lt;p&gt;Κατά τα άλλα, ο κώδικας που θέλεις είναι ακριβώς αυτός που φαίνεται παραπάνω. Δοκίμασέ τον.&lt;/p&gt;&lt;p&gt; Γιατί να διαβάσεις το stream δυο φορές; Διαβάζεις μια από το network stream και βάζεις αυτά που διαβάζεις στο byte array και μετά το byte array το "γράφεις" στο FileStream.&lt;br&gt;&amp;nbsp;&lt;/p&gt;</description></item><item><title>Απ: Streams!</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/41702.aspx</link><pubDate>Thu, 24 Apr 2008 07:25:25 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:41702</guid><dc:creator>JohnL</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/41702.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=80&amp;PostID=41702</wfw:commentRss><description>Ευχαριστώ πολύ!&lt;br&gt;&lt;br&gt;Επειδή θέλω όμως να διαβάσω το Stream δύο φορές, δε θα έπρεπε να χρησιμοποιήσω αντί για FileStream, ένα ενδιάμεσο MemoryStream? Ή γίνεται και αλλιώς?&lt;br&gt;&lt;br&gt;&lt;br&gt;BTW. Δημήτρη πολύ ενδιαφέρουσα παρουσίαση σήμερα στη Microsoft για τα Mobile! Thank you!&lt;br&gt;</description></item><item><title>Απ: Streams!</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/41689.aspx</link><pubDate>Wed, 23 Apr 2008 18:20:35 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:41689</guid><dc:creator>Dimitris Papadimitriou</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/41689.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=80&amp;PostID=41689</wfw:commentRss><description>Εξαιρετικός κώδικας! ... έστω και χωρίς το indentation &lt;img src="http://www.dotnetzone.gr/cs/emoticons/emotion-2.gif" alt="Big Smile" /&gt;&lt;br&gt;</description></item><item><title>Απ: Streams!</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/41688.aspx</link><pubDate>Wed, 23 Apr 2008 18:07:00 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:41688</guid><dc:creator>plasmatek</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/41688.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=80&amp;PostID=41688</wfw:commentRss><description>&lt;P&gt;Φαντάζομαι ότι θες κάτι σαν το παρακάτω:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:black;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;using&lt;/SPAN&gt; System.Net;&lt;BR&gt;&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;using&lt;/SPAN&gt; System.IO; &lt;BR&gt;&lt;BR&gt;&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;public&lt;/SPAN&gt; &lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;void&lt;/SPAN&gt; TestMe()&lt;BR&gt;{&lt;BR&gt;WebRequest myWebRequest &lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:red;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;=&lt;/SPAN&gt; WebRequest.Create(&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:#666666;FONT-FAMILY:Courier New;BACKGROUND-COLOR:#e4e4e4;"&gt;"http://www.google.com/intl/en_ALL/images/logo.gif"&lt;/SPAN&gt;);&lt;BR&gt;WebResponse myWebResponse &lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:red;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;=&lt;/SPAN&gt; myWebRequest.GetResponse();&lt;BR&gt;Stream receiveStream &lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:red;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;=&lt;/SPAN&gt; myWebResponse.GetResponseStream();&lt;BR&gt;&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:green;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;//Open filestream for writing operation&lt;/SPAN&gt;&lt;BR&gt;FileStream fs &lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:red;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;=&lt;/SPAN&gt; &lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;new&lt;/SPAN&gt; FileStream(&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:#666666;FONT-FAMILY:Courier New;BACKGROUND-COLOR:#e4e4e4;"&gt;@"C:\logo.gif"&lt;/SPAN&gt;, FileMode.Create);&lt;BR&gt;&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:green;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;//byte buffer of 1024 bytes&lt;/SPAN&gt;&lt;BR&gt;Byte[] read &lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:red;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;=&lt;/SPAN&gt; &lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;new&lt;/SPAN&gt; Byte[1024];&lt;BR&gt;&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;int&lt;/SPAN&gt; count;&lt;BR&gt;&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;while&lt;/SPAN&gt; ((count &lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:red;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;=&lt;/SPAN&gt; receiveStream.Read(read, 0, 1024)) &amp;gt; 0)&lt;BR&gt;{&lt;BR&gt;fs.Write(read,0,count);&lt;BR&gt;}&lt;BR&gt;&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:green;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;//Close streams&lt;/SPAN&gt;&lt;BR&gt;fs.Close();&lt;BR&gt;receiveStream.Close();&lt;BR&gt;}&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:black;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;oops, χάθηκε το indentation του κώδικα αλλά φαντάζομαι θα βγάλεις άκρη...&lt;/SPAN&gt;&lt;/P&gt;</description></item><item><title>Απ: Streams!</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/41686.aspx</link><pubDate>Wed, 23 Apr 2008 17:35:43 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:41686</guid><dc:creator>Dimitris Papadimitriou</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/41686.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=80&amp;PostID=41686</wfw:commentRss><description>&lt;p&gt;Ο τρόπος που λειτουργούν τα stream φαίνεται όντως λίγο περίεργος αν δεν έχεις ασχοληθεί ποτέ, αλλά είναι ο πιο αποδοτικός τρόπος για να γίνει μια τέτοια δουλειά.&lt;/p&gt;&lt;p&gt;Αφού πάρεις το StreamReader από το web request, πρέπει να ανοίξεις ένα FileStream. Θα διαβάζεις δεδομένα από το πρώτο σε chunks (πακέτα) και θα τα γράφεις στο δεύτερο. Έτσι μπορείς να κατεβάσεις τεράστια αρχεία χωρίς να χρειάζεται να τα φορτώσεις στη μνήμη ολόκληρα και μετά να τα γράψεις σε αρχείο. Οπότε το MemoryStream είναι εφικτή λύση αλλά δεν συστήνεται γι αυτή τη δουλειά.&lt;/p&gt;&lt;p&gt;Οπότε κάνεις ένα byte array μικρού σχετικά μήκους π.χ. 1024 (1KB) και διαβάζεις με την Read από το StreamReader. Στη συνέχεια γράφεις αυτό το array χρησιμοποιώντας την Write του FileStream.&lt;br&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;Προσοχή!&lt;/b&gt; Πρέπει πάντα να παίρνεις και το return value της Read που επιστρέφει πόσα bytes διαβάστηκαν τελικά. Μπορείς εσύ να του λες να διαβάσει 1024, αλλά στο τέλος του αρχείου θα διαβάσει ότι περισσέψει. Οπότε όταν γράφεις στο FileStream δεν πρέπει να γράφεις όλο το byte array, αλλά έως το σημείο που έγραψε η Read του StreamReader.&lt;br&gt;&lt;/p&gt;</description></item><item><title>Streams!</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/41683.aspx</link><pubDate>Wed, 23 Apr 2008 10:34:31 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:41683</guid><dc:creator>JohnL</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/41683.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=80&amp;PostID=41683</wfw:commentRss><description>Θέλω να κάνω download ένα αρχείο από το internet χρησιμοποιώντας το HttpWebRequest και να το γράφω binary στο δίσκο....&lt;br&gt;&lt;br&gt;Το σημείο στο οποίο κολλάω είναι το πώς θα περάσω το HttpWebRequest.GetResponseStream() σε ένα Byte Array ή σε ένα Memory Stream π.χ.&lt;br&gt;&lt;br&gt;Φτάνω μέχρι και το StreamReader αλλά δεν ξέρω αν το χρειάζομαι....&lt;br&gt;&lt;br&gt;Λίγη βοήθεια???&lt;br&gt;</description></item></channel></rss>