<?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>Visual C++ 6.0 / .NET (unmanaged)</title><link>https://www.dotnetzone.gr:443/cs/forums/30/ShowForum.aspx</link><description>Για τους hardcore developers, C/C++ forum για windows εφαρμογές!</description><dc:language>el</dc:language><generator>CommunityServer 2.1 SP3 (Build: 20423.1)</generator><item><title>Απ: WriteFile &amp; Threads</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/48814.aspx</link><pubDate>Tue, 03 Mar 2009 02:20:14 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:48814</guid><dc:creator>mixio</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/48814.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=30&amp;PostID=48814</wfw:commentRss><description>Λυθηκε με Overlapped I/O.&lt;br /&gt;&lt;br /&gt;Βεβαια τωρα ανοιξαν αλλα θεματα.&lt;br /&gt;Οταν ειναι να περασει ενα IP πακετο με μεγεθος μεγαλυτερου απο το MTU της συσκευης συμβαινει IP fragmentation. Ετσι το wireshark θα δειξει δυο ip packets/fragments.&lt;br /&gt;Το προβλημα ειναι οτι η εφαρμογη μου διαβαζει μονο το 1ο frag. Το 2ο το χανει αλλα ξερω οτι υπηρξε αφου το βλεπω στο wireshark.</description></item><item><title>Απ: WriteFile &amp; Threads</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/48789.aspx</link><pubDate>Sat, 28 Feb 2009 05:59:35 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:48789</guid><dc:creator>mixio</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/48789.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=30&amp;PostID=48789</wfw:commentRss><description>Κατι νεο που βρηκα απο το http://gmitweb.gmit.ie/pdunne/opsys/labs/lab12/SerialCommsinWin32-Microsoft.pdf&lt;br /&gt;&lt;br /&gt;Nonoverlapped I/O&lt;br /&gt;&lt;br /&gt;If one thread is blocked waiting for its I/O operation to complete, all other threads that&lt;br /&gt;subsequently call a communications API will be blocked until the original operation completes. &lt;br /&gt;For instance, if one thread were waiting for a ReadFile function to return, any other thread that issued a WriteFile function&lt;br /&gt;would be blocked.&lt;br /&gt;&lt;br /&gt;Οι δυο τελευταιες σειρες ειναι ακριβως αυτο που συμβαινει σε μενα. Περιμενω την ReadFile() να τελιωσει. Επειτα ξεκιναει ο timer να εκτελει τις WriteLine().&lt;br /&gt;Oση ωρα δεν υπαρχει κατι νεο να διαβαστει οι WriteLine() μπλοκαρονται. Μολις υπαρξει κατι για διαβασμα ( δηλαδη να τελιωσει η ReadFile() ) αμεσως τρεχουν και οι υπολοιπες WriteLine που κληθηκαν απο το αλλο thread. Οποτε δεν ειναι θεμα των διαφορετικων thread που γραφουν στο ιδιο handle. Ειναι οτι χρησιμοποιω Nonoverlapped I/O το οποιο ετσι ειναι φτιαγμενο.&lt;br /&gt;&lt;br /&gt;Παραθετω το κομματι κωδικα. O write_timer ειναι αυτος που θα καλεσει τις WriteLine. Μολις τελιωσει ενα ReadLine θα ξεκινησουν τα WriteLine αλλα επειδη αμεσως θα κληθει ξανα η ReadLine θα μπλοκαρουν οι WriteLine μεχρι να γινει κατι και ερθουν data για διαβασμα.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;            while (true)&lt;br /&gt;            {&lt;br /&gt;                if (Kernel32.ReadFile(tun.getTunHandle(), BufBytes, BufBytes.Length, out BytesRead, IntPtr.Zero))&lt;br /&gt;                {&lt;br /&gt;                    write_timer.Stop();&lt;br /&gt;&lt;br /&gt;                    // Before we copy the actual IP Datagram to OutBytes &lt;br /&gt;                    // we have to add the linux TUN header [0x0 0x0 0x8 0x0]&lt;br /&gt;                    byte[] OutBytes = new byte[BytesRead + 4];&lt;br /&gt;                    OutBytes[0] = 0x0;&lt;br /&gt;                    OutBytes[1] = 0x0;&lt;br /&gt;                    OutBytes[2] = 0x8;&lt;br /&gt;                    OutBytes[3] = 0x0;&lt;br /&gt;&lt;br /&gt;                    // Copy the actual IP Datagram to OutBytes&lt;br /&gt;                    Array.Copy(BufBytes, 0, OutBytes, 4, BytesRead);&lt;br /&gt;                    &lt;br /&gt;                    // Send it for dns manipulation&lt;br /&gt;                    ManipulateTunPacket(OutBytes);&lt;br /&gt;&lt;br /&gt;                    write_timer.Start();&lt;br /&gt;                }   &lt;br /&gt;                &lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;Επειδη δεν θελω να παω σε Οverlapped I/O εχει κανεις καμια ιδεα για το πως αλλιως θα μπορουσα να το κανω;&lt;br /&gt;Δηλαδη πως θα μπορουσα να ξεμπλοκαρω την ReadLine. Θα μου πεις στειλε λιγα data για διαβασμα... Ε, ειναι λιγο τσομπανικο.</description></item><item><title>Απ: WriteFile &amp; Threads</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/48771.aspx</link><pubDate>Fri, 27 Feb 2009 08:17:15 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:48771</guid><dc:creator>Markos</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/48771.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=30&amp;PostID=48771</wfw:commentRss><description>&lt;P&gt;Όχι. Απλά μου πέρασε από το μυαλό μήπως στις κλήσεις των μεθόδων γινόταν κάποιο μπλέξιμο με τις μεταβλητές. Μάλλον ψάξου προς την κατεύθυνση που λέει ο Παναγιώτης.&lt;/P&gt;</description></item><item><title>Απ: WriteFile &amp; Threads</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/48770.aspx</link><pubDate>Fri, 27 Feb 2009 08:00:38 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:48770</guid><dc:creator>mixio</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/48770.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=30&amp;PostID=48770</wfw:commentRss><description>&lt;BLOCKQUOTE&gt;&lt;div&gt;&lt;img src="http://www.dotnetzone.gr/cs/Themes/default/images/icon-quote.gif"&gt; &lt;strong&gt;Markos:&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;OK. Απλά μου πέρασε από το μυαλό μήπως ορίζει κάποιες static μεταβλητές που του δημιουργούν πρόβλημα. Γι' αυτό του είπα να τα βάλει σε μία κλάση. Βλέπεις, δε δίνει όλο τον κώδικα.&lt;/p&gt;&lt;/div&gt;&lt;/BLOCKQUOTE&gt;&lt;br&gt;&lt;br&gt;Ο timer ειναι στατικ αφου ειναι και η main και αρχικοποιειται μεσα σ'αυτην. Παιζει ρολο;&lt;br&gt;</description></item><item><title>Απ: WriteFile &amp; Threads</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/48769.aspx</link><pubDate>Fri, 27 Feb 2009 07:33:19 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:48769</guid><dc:creator>mixio</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/48769.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=30&amp;PostID=48769</wfw:commentRss><description>Παιδια εχω δοκιμασει αυτα που λετε εδω και καιρο αλλα τζιφος.&lt;br&gt;&lt;br&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;Παναγιώτης Καναβός:&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;Μου ήρθε μία φλασιά. mixio, μήπως όλα τα threads προσπαθούν να γράψουν χρησιμοποιώντας το ίδιο handle? Μήπως η συσκευή που χρησιμοποιείς δεν επιτρέπει σε πολλά thread να γράψουν ή να την ανοίξουν ταυτόχρονα? Το ότι άνοιξες τη συσκευή με FILE_SHARE_WRITE δεν σημαίνει ότι δέχεται κιόλας να την ανοίξουν ή να γράψουν πολλοί ταυτόχρονα σε αυτή.&lt;/p&gt;
&lt;/div&gt;&lt;/BLOCKQUOTE&gt;&lt;br&gt;&lt;br&gt;Ναι Πανο. Ειναι ενα global handle και ολα τα threads γραφουν σε αυτο (οχι παραλληλα). Πες μου οτι δεν ειναι σωστο;&lt;br&gt;Πως να ξερω αν η συσκευη επιτρεπει ή οχι πολλα νηματα να γραφουν;&lt;br&gt;Για να εξηγησω τι ειναι αυτη η συσκευη........ Ειναι μια εικονικη συσκευη που την δημιουργει ο Tap Driver του OpenVPN Project. &lt;br&gt;Η χρηση της ειναι να μιλαει με userspace για να υλοποιειται οποιοδηποτε ειδος tunneling. Ολα αυτα τα VPN και λοιπα που ακουτε καθε μερα χρησιμοποιουν μια τετοια συσκευη.&lt;br&gt;&lt;br&gt;</description></item><item><title>Απ: WriteFile &amp; Threads</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/48756.aspx</link><pubDate>Fri, 27 Feb 2009 03:16:06 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:48756</guid><dc:creator>Markos</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/48756.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=30&amp;PostID=48756</wfw:commentRss><description>&lt;P&gt;OK. Απλά μου πέρασε από το μυαλό μήπως ορίζει κάποιες static μεταβλητές που του δημιουργούν πρόβλημα. Γι' αυτό του είπα να τα βάλει σε μία κλάση. Βλέπεις, δε δίνει όλο τον κώδικα.&lt;/P&gt;</description></item><item><title>Απ: WriteFile &amp; Threads</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/48755.aspx</link><pubDate>Fri, 27 Feb 2009 03:04:41 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:48755</guid><dc:creator>Παναγιώτης Καναβός</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/48755.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=30&amp;PostID=48755</wfw:commentRss><description>&lt;P&gt;Και στην&amp;nbsp;Main να τον αφήσει, πάλι θα παίξει ο κώδικας. Δεν έχει σημασία σε ποιά κλάση είναι ο timer. Και ο παρακάτω κώδικας παίζει, χωρίς πρόβλημα:&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="BACKGROUND-COLOR:transparent;FONT-FAMILY:Courier New;COLOR:black;FONT-SIZE:11px;FONT-WEIGHT:normal;"&gt;&lt;SPAN style="BACKGROUND-COLOR:transparent;FONT-FAMILY:Courier New;COLOR:blue;FONT-SIZE:11px;FONT-WEIGHT:normal;"&gt;class&lt;/SPAN&gt; Program&lt;BR&gt;{&lt;BR&gt;&lt;BR&gt;&lt;SPAN style="BACKGROUND-COLOR:transparent;FONT-FAMILY:Courier New;COLOR:blue;FONT-SIZE:11px;FONT-WEIGHT:normal;"&gt;static&lt;/SPAN&gt; &lt;SPAN style="BACKGROUND-COLOR:transparent;FONT-FAMILY:Courier New;COLOR:blue;FONT-SIZE:11px;FONT-WEIGHT:normal;"&gt;void&lt;/SPAN&gt; Main(&lt;SPAN style="BACKGROUND-COLOR:transparent;FONT-FAMILY:Courier New;COLOR:blue;FONT-SIZE:11px;FONT-WEIGHT:normal;"&gt;string&lt;/SPAN&gt;[] args)&lt;BR&gt;{&lt;BR&gt;System.Timers.Timer myTimer &lt;SPAN style="BACKGROUND-COLOR:transparent;FONT-FAMILY:Courier New;COLOR:red;FONT-SIZE:11px;FONT-WEIGHT:normal;"&gt;=&lt;/SPAN&gt; &lt;SPAN style="BACKGROUND-COLOR:transparent;FONT-FAMILY:Courier New;COLOR:blue;FONT-SIZE:11px;FONT-WEIGHT:normal;"&gt;new&lt;/SPAN&gt; System.Timers.Timer();&lt;BR&gt;myTimer.Interval &lt;SPAN style="BACKGROUND-COLOR:transparent;FONT-FAMILY:Courier New;COLOR:red;FONT-SIZE:11px;FONT-WEIGHT:normal;"&gt;=&lt;/SPAN&gt; 100;&lt;BR&gt;myTimer.Elapsed += &lt;SPAN style="BACKGROUND-COLOR:transparent;FONT-FAMILY:Courier New;COLOR:blue;FONT-SIZE:11px;FONT-WEIGHT:normal;"&gt;new&lt;/SPAN&gt; ElapsedEventHandler(myTimer_Elapsed);&lt;BR&gt;myTimer.Start();&lt;BR&gt;Thread.Sleep(1000);&lt;BR&gt;}&lt;BR&gt;&lt;BR&gt;&lt;SPAN style="BACKGROUND-COLOR:transparent;FONT-FAMILY:Courier New;COLOR:blue;FONT-SIZE:11px;FONT-WEIGHT:normal;"&gt;static&lt;/SPAN&gt; &lt;SPAN style="BACKGROUND-COLOR:transparent;FONT-FAMILY:Courier New;COLOR:blue;FONT-SIZE:11px;FONT-WEIGHT:normal;"&gt;void&lt;/SPAN&gt; myTimer_Elapsed(&lt;SPAN style="BACKGROUND-COLOR:transparent;FONT-FAMILY:Courier New;COLOR:blue;FONT-SIZE:11px;FONT-WEIGHT:normal;"&gt;object&lt;/SPAN&gt; sender, ElapsedEventArgs e)&lt;BR&gt;{&lt;BR&gt;Console.WriteLine(e.SignalTime.ToString());&lt;BR&gt;}&lt;BR&gt;}&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;..........&lt;/P&gt;
&lt;P&gt;Μου ήρθε μία φλασιά. mixio, μήπως όλα τα threads προσπαθούν να γράψουν χρησιμοποιώντας το ίδιο handle? Μήπως η συσκευή που χρησιμοποιείς δεν επιτρέπει σε πολλά thread να γράψουν ή να την ανοίξουν ταυτόχρονα? Το ότι άνοιξες τη συσκευή με FILE_SHARE_WRITE δεν σημαίνει ότι δέχεται κιόλας να την ανοίξουν ή να γράψουν πολλοί ταυτόχρονα σε αυτή.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description></item><item><title>Απ: WriteFile &amp; Threads</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/48754.aspx</link><pubDate>Fri, 27 Feb 2009 02:40:26 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:48754</guid><dc:creator>Markos</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/48754.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=30&amp;PostID=48754</wfw:commentRss><description>&lt;P&gt;Μη δημιυργήσεις τον Timer μέσα στη Main() αλλά σε ξεχωριστή κλάση, κάπως έτσι:&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;&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.Collections.Generic;&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.Text;&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.Timers;&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;namespace&lt;/SPAN&gt; TimerExample&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;class&lt;/SPAN&gt; Program&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;BR&gt;&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;static&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; Main(&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;string&lt;/SPAN&gt;[] args)&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;Timming timming &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; Timming();&lt;BR&gt;&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:green;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&lt;/SPAN&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.ReadLine();&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;&lt;BR&gt;&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;class&lt;/SPAN&gt; Timming&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Timer timer &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; Timer();&lt;BR&gt;&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int&lt;/SPAN&gt; iter &lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:red;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;=&lt;/SPAN&gt; 0;&lt;BR&gt;&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:green;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&lt;/SPAN&gt;&lt;BR&gt;&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&lt;/SPAN&gt; Timming()&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;BR&gt;&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this&lt;/SPAN&gt;.timer.Interval &lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:red;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;=&lt;/SPAN&gt; 1000;&lt;BR&gt;&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this&lt;/SPAN&gt;.timer.Enabled &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;true&lt;/SPAN&gt;;&lt;BR&gt;&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this&lt;/SPAN&gt;.timer.Elapsed += &lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;new&lt;/SPAN&gt; ElapsedEventHandler(timer_Elapsed);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;void&lt;/SPAN&gt; timer_Elapsed(&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;object&lt;/SPAN&gt; sender, ElapsedEventArgs e)&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;iter++;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.WriteLine(&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:#666666;FONT-FAMILY:Courier New;BACKGROUND-COLOR:#e4e4e4;"&gt;"Iterations: "&lt;/SPAN&gt; &lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:red;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;+&lt;/SPAN&gt; iter.ToString());&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&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;&lt;FONT face=Tahoma size=2&gt;Δοκίμασέ το και πες μας αν λειτούργησε.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;</description></item><item><title>Απ: WriteFile &amp; Threads</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/48751.aspx</link><pubDate>Fri, 27 Feb 2009 01:48:09 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:48751</guid><dc:creator>mixio</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/48751.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=30&amp;PostID=48751</wfw:commentRss><description>Markos δεν ειμαι σε GUI. Απλη console ειναι η εφαρμογη. &lt;img src="http://www.dotnetzone.gr/cs/emoticons/emotion-1.gif" alt="Smile" /&gt;&lt;br&gt;</description></item><item><title>Απ: WriteFile &amp; Threads</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/48745.aspx</link><pubDate>Fri, 27 Feb 2009 00:53:48 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:48745</guid><dc:creator>Markos</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/48745.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=30&amp;PostID=48745</wfw:commentRss><description>&lt;P&gt;Η αλήθεια είναι ότι&amp;nbsp;δε&amp;nbsp;χρησιμοποιώ Timers, δεν μου έχουν&amp;nbsp;χρειαστεί δηλαδή μέχρι τώρα. Είσαι σίγουρος ότι έχεις διαβάσει σωστά την &lt;A href="http://msdn.microsoft.com/en-us/library/system.timers.timer.aspx"&gt;τεκμηρίωση&lt;/A&gt; της Timer Class; Καλείς την Timer_Elapsed μέσα από visual component; Αν ναι, έχεις θέσει το &lt;SPAN&gt;&lt;SPAN class=selflink&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/system.timers.timer.synchronizingobject.aspx"&gt;SynchronizingObject&lt;/A&gt;; Αντιγράφω από το documentation:&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;SPAN&gt;&lt;SPAN class=selflink&gt;
&lt;P&gt;&lt;EM&gt;When the &lt;SPAN&gt;&lt;A id=ctl00_rs1_mainContentContainer_ctl44 href="http://msdn.microsoft.com/en-us/library/system.timers.timer.elapsed.aspx"&gt;&lt;FONT color=#0033cc&gt;Elapsed&lt;/FONT&gt;&lt;/A&gt;&lt;/SPAN&gt; event is handled by a visual Windows Forms component, such as a button, accessing the component through the system-thread pool might result in an exception or just might not work. Avoid this effect by setting &lt;SPAN&gt;&lt;SPAN class=selflink&gt;&lt;STRONG&gt;SynchronizingObject&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/SPAN&gt; to a Windows Forms component, which causes the method that handles the &lt;SPAN&gt;&lt;A id=ctl00_rs1_mainContentContainer_ctl45 href="http://msdn.microsoft.com/en-us/library/system.timers.timer.elapsed.aspx"&gt;&lt;FONT color=#0033cc&gt;Elapsed&lt;/FONT&gt;&lt;/A&gt;&lt;/SPAN&gt; event to be called on the same thread that the component was created on.&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;</description></item><item><title>Απ: WriteFile &amp; Threads</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/48743.aspx</link><pubDate>Fri, 27 Feb 2009 00:18:08 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:48743</guid><dc:creator>mixio</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/48743.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=30&amp;PostID=48743</wfw:commentRss><description>Χρησιμοποιω τον System.Timers.Timer() με&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; timer.Elapsed += new ElapsedEventHandler(ping_elapsed);&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; timer.Interval = 1000;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; timer.Start();&lt;br&gt;Μεσα στην ping_elapsed() εχω την WriteFile() και πριν απο την WriteFile() τυπωνω ενα μηνυμα για να δω μεχρι που εφτασε η ροη. Δεν ειδα σε debugger τιποτα. &lt;br&gt;&lt;br&gt;Την WriteFile την εχω μελετησει μια χαρα γι'αυτο αλλωστε ολη εφαρμογη δουλευει μεχρι τωρα. Στις αρχες μονο ειχα κατι προβληματα γιατι ανοιγα την συσκευη σε overlapped mode. Την GetLastError() την γνωριζω αλλα δεν την χρησιμοποιω γιατι πιστευω οτι δεν θα βγει κατι απο 'κει. Εννοειτε πως το προβλημα ειναι στον κωδικα και οχι στο OS. Δεν υπαρχει θεμα γι'αυτο. Ενταξει πρωτη φορα ασχοληθηκα στα βαθια με windows API λογικο δεν ειναι να πελαγοδρομισω; &lt;img src="http://www.dotnetzone.gr/cs/emoticons/emotion-13.gif" alt="Angel" /&gt; &lt;br&gt;&lt;br&gt;Μια που ειπες οτι υπαρχουν και αλλοι timers θα τους βρω και 8α τους δοκιμασω.&lt;br&gt;Τι αλλες πληροφοριες θα σου ηταν χρησιμες; επειδη λες οτι περιγραφω αποσπασματικα. Θα δω και στον debugger τιποτα.&lt;br&gt;&lt;br&gt;Ευχαριστω.&lt;br&gt;&lt;br&gt;&lt;br&gt;</description></item><item><title>Απ: WriteFile &amp; Threads</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/48741.aspx</link><pubDate>Thu, 26 Feb 2009 22:39:38 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:48741</guid><dc:creator>Παναγιώτης Καναβός</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/48741.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=30&amp;PostID=48741</wfw:commentRss><description>&lt;P&gt;Είσαι σίγουρος ότι ο timer εκτελείται όπως νομίζεις? Υπάρχουν 3 διαφορετικοί timers, με διαφορετκή συμπεριφορά. Ποιόν χρησιμοποιείς εσύ? Πως τον καλείς?&amp;nbsp; Γιατί πιστεύεις ότι η WriteFile δεν εκτελείται? Το είδες στον Debugger ή θεωρείς ότι επειδή δεν είδες αμέσως τα αποτελέσματα της Console.WriteLine δεν έτρεξε και ο κώδικας? &lt;/P&gt;
&lt;P&gt;mixio, μπλέκεις πάρα πολλά πράγματα μαζί με αποτέλεσμα να πελαγοδρομείς. Δεν γίνεται να γράψεις κώδικα, ειδικά για διπλωματική, αντιγράφοντας ένα code snippet και παλεύοντας να το κάνεις να δουλέψει. Επίσης, μας λες τί συμβαίνει αποσπασματικά, με αποτέλεσμα να μην μπορεί κανείς να καταλάβει τί συμβαίνει. &lt;/P&gt;
&lt;P&gt;Για παράδειγμα, ΟΛΕΣ οι παράμετροι της WriteFile είναι pointers. Αν δεν καταλαβαίνεις τί είναι αυτές οι παράμετροι, δύσκολα θα κάνεις και την WriteFile να δουλέψει. Αν κοίταζες το documentation της WriteFile θα έβλεπες ότι περιέχει&lt;A href="http://msdn.microsoft.com/en-us/library/bb540534(VS.85).aspx"&gt; παραδείγματα&lt;/A&gt; πως να την καλέσεις και πως να δεις τί λάθος συμβαίνει με την GetLastError().&lt;/P&gt;
&lt;P&gt;Άλλο παράδειγμα, μετά από τόσα posts αναφέρεις ότι χρησιμοποιείς κάποιο timer, αλλά πρέπει από την ναφορά στο Timer_Elapsed να καταλάβω ότι μάλλον μιλάς για τον System.Timers.Timer.&lt;/P&gt;
&lt;P&gt;Όταν αντιμετωπίζεις πρόβλημα θα πρέπει να το σπάσεις σε κομμάτια. Καταρχήν, αναντιμετωπίζεις περίεργη μπεριφορά, κατά κανόνα το πρόβλημα βρίσκεται στον κώδικα σου και όχι στο λειτουργικό (η WriteFile είναι τμήμα του λειτουργικού). Πιστεύεις ότι έχει πρόβλημα ή WriteFile? Απομόνωσε τη σε ένα ανεξάρτητο πρόγραμμα ή μέθοδο, και δοκίμασε αυτή και μόνο. Νομίζεις ότι έχει πρόβλημα ο Timer? Φτιάξε ένα άλλο πρόγραμμα, μόνο με τον timer, και δες πως δουλεύει μέσα από το debugger.&lt;/P&gt;
&lt;P&gt;Το άλλο σημαντικό που πρέπει να κάνεις, είναι το RTFM. Όταν ασχολείσαι με κάποιο API ή function που δεν έχεις ξαναχρησιμοποιήσει, το RTFM ΔΕΝ είναι προαιρετικό. Ειδικά για το Windows API, το documentation έχει κοσκινιστεί εδώ και 10 χρόνια, με αποτέλεσμα να έχει πολύ καλή δομή, τόσο στις επεξηγήσεις όσο και στα παραδείγματα. Εκεί θα βρεις σχεδόν ό,τι χρειάζεσαι. &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description></item><item><title>Απ: WriteFile &amp; Threads</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/48740.aspx</link><pubDate>Thu, 26 Feb 2009 20:12:37 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:48740</guid><dc:creator>mixio</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/48740.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=30&amp;PostID=48740</wfw:commentRss><description>Λοιπον βρηκα μια αλλη πληροφορια που ισως βοηθησει.&lt;br&gt;&lt;br&gt;Οταν τερματιζεται η εφαρμογη ολα WriteLine() που δεν εκτελεσθηκαν απο τα timer_elapsed που γιναν καθ'ολη την διαρκεια, &lt;br&gt;εκτελουνται ολα μαζι στο τελος με αποτελεσμα να βλεπω στην κονσολα μαζεμενα &lt;br&gt;"Written: x bytes"&lt;br&gt;"Written: y bytes"&lt;br&gt;"Written: z bytes"&lt;br&gt;...&lt;br&gt;&lt;br&gt;Καποιος; Κερναω μπυρες &lt;img src="http://www.dotnetzone.gr/cs/emoticons/emotion-22.gif" alt="Beer" /&gt; σε οποιον συνδραμει &lt;img src="http://www.dotnetzone.gr/cs/emoticons/emotion-2.gif" alt="Big Smile" /&gt;&lt;br&gt;</description></item><item><title>Απ: WriteFile &amp; Threads</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/48733.aspx</link><pubDate>Thu, 26 Feb 2009 04:08:01 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:48733</guid><dc:creator>mixio</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/48733.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=30&amp;PostID=48733</wfw:commentRss><description>Καμια βοηθεια ρε παιδες; &lt;img src="http://www.dotnetzone.gr/cs/emoticons/emotion-7.gif" alt="Tongue Tied" /&gt;&lt;br&gt;</description></item><item><title>Απ: WriteFile &amp; Threads</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/48707.aspx</link><pubDate>Wed, 25 Feb 2009 07:06:31 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:48707</guid><dc:creator>mixio</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/48707.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=30&amp;PostID=48707</wfw:commentRss><description>&lt;BLOCKQUOTE&gt;&lt;div&gt;&lt;img src="http://www.dotnetzone.gr/cs/Themes/default/images/icon-quote.gif"&gt; &lt;strong&gt;Παναγιώτης Καναβός:&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;Άρα όντως μιλάς για την WriteFile του Kernel. Μιλάς δηλαδή για unmanaged κώδικα. Γενικά, καλό είναι οι ερωτήσεις να γίνονται στα κατάλληλα forum, διαφορετικά δημιουργείται σύγχιση. Στην περίπτωση σου για παράδειγμα, το λογικότερο θα ήταν να υποθέσει κάποιος ότι αφού γράφεις στο .NET Framework forum, αναφέρεσαι σε κάποια μέθοδο κάποιας κλάσης του .NET, π.χ. της HttpResponse.WriteFile.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Όσον αφορά τη WriteFile και το main thread, είναι απολύτως βέβαιο ότι δουλεύει από οποιοδήποτε thread. Το multi-threading δεν είναι ανακάλυψη του .NET Framework. Υπάρχουν χιλιάδες unmanaged εφαρμογές οι οποίες χρησιμοποιούν multithreading και χρησιμοποιούν την WriteFile από διαφορετικά threads. Μάλιστα, η εκτέλεση του I/O σε ξεχωριστά threads είναι μία από τις βασικότερες τεχνικές για να βελτιώσεις την απόδοση μίας εφαρμογής. &lt;/p&gt;&lt;br /&gt;&lt;p&gt;Το πρόβλημα (το οποίο δεν αναφέρεις) βρίσκεται σίγουρα στον δικό σου κώδικα. Τί εννοείς "δεν λειτουργεί"? Τί συμβαίνει" Εμφανίζεται error? Επιστρέφει κάποιο Error Code? Ποιό είναι αυτό? Έχεις περάσει τους σωστούς pointers από το ένα thread στο άλλο?&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Και γιατί τέλος πάντων, δεν χρησιμοποιείς τις I/O κλάσεις του .ΝΕΤ αλλά παίζεις με unmanaged κλήσεις μέσα σε managed κώδικα? &lt;/p&gt;&lt;/div&gt;&lt;/BLOCKQUOTE&gt;&lt;br&gt;&lt;br&gt;Οκ, μολις τελιωσει αυτο το thread ας το περασει καποιος moderator εκει που πρεπει. Ειλικρινα δεν γνωριζα αυτα που ειπες.&lt;br&gt;&lt;br&gt;Τι να σου πω. Εκτελω το παρακατω απο εναν Timer που δημιουργησα στην Main()&lt;br&gt;&lt;br&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; if (Kernel32.WriteFile(TunHandle, packet, packet.Length, out BytesWritten, IntPtr.Zero))&lt;br&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;br&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Console.WriteLine("Written: " + BytesWritten);&lt;br&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;br&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; else&lt;br&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;br&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Console.WriteLine("WriteTun: Could not write on tun.");&lt;br&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;br&gt;&lt;br&gt;Δεν βγαζει κανενα απο τα δυο μηνυματα. &lt;br&gt;Τον ιδιο κωδικα αν τον τρεξω μεσα στην Main() δουλευει κανονικα.&lt;br&gt;Για τα errors που λες υπαρχει κατι που μπορω να προσθεσω στον κωδικα αυτον για να μου τυπωνει τα ενδεχομενα errors?&lt;br&gt;Γιατι αναφερεσαι σε pointers? Με μπερδευεις. Υπενθυμιζω οτι εχω ανοιξει το TunHandle σε non-overlapped mode.&lt;br&gt;&lt;br&gt;Φιλε μου για το τελευταιο που ρωτησες δεν υπαρχει απαντηση. Δεν ξερω πως κατεφυγα σε unmanaged κλησεις που λες παντως θυμαμαι οταν χρησιμοποιουσα FileStream για I/O στο εικονικο device τιποτα δε επαιζε.&lt;br&gt;Ευχαριστω για το χρονο σου.&lt;br&gt;&lt;br /&gt;&lt;br /&gt;PS. θυμηθηκα γιατι μπηκα σε unmanged. Υπαρχει αυτο το thread http://www.dotnetzone.gr/cs/forums/thread/46385.aspx</description></item></channel></rss>