<?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>Απ: C++ συνάρτηση Sleep που καλείται από C#</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/52043.aspx</link><pubDate>Sat, 27 Jun 2009 11:58:09 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:52043</guid><dc:creator>darklynx</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/52043.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=30&amp;PostID=52043</wfw:commentRss><description>&lt;P&gt;Χεχε δεν έφτιαξα το nickname μου σκεπτόμενος το μαύρο χιούμορ μου αλλά είναι και αυτό μια οπτική γωνία του πράγματος.&lt;img src="http://www.dotnetzone.gr/cs/emoticons/emotion-4.gif" alt="Stick out tongue" /&gt;&lt;/P&gt;</description></item><item><title>Απ: C++ συνάρτηση Sleep που καλείται από C#</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/52036.aspx</link><pubDate>Sat, 27 Jun 2009 07:32:39 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:52036</guid><dc:creator>m6s</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/52036.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=30&amp;PostID=52036</wfw:commentRss><description>oxi tixea loipon se lene dark? &lt;img src="http://www.dotnetzone.gr/cs/emoticons/emotion-2.gif" alt="Big Smile" /&gt;&amp;nbsp; mou arese oti akrivos eipes &amp;amp; krepa xlomo na fao gia poli kairo&amp;nbsp;&amp;nbsp; &lt;img src="http://www.dotnetzone.gr/cs/emoticons/emotion-5.gif" alt="Wink" /&gt;&lt;br&gt;thanx man&lt;br&gt;</description></item><item><title>Απ: C++ συνάρτηση Sleep που καλείται από C#</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/52034.aspx</link><pubDate>Sat, 27 Jun 2009 06:10:28 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:52034</guid><dc:creator>darklynx</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/52034.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=30&amp;PostID=52034</wfw:commentRss><description>&lt;P&gt;Αν έφτιαχνες το dll με C++/CLI (έκανες δηλαδή ένα mixed code assembly) το να πάρεις τη φόρμα και να της αλλάξεις ότι properties θέλεις θα ήταν παιχνιδάκι,δεν ξέρω όμως αν ταιριάζει με τις προδιαγραφές του project σου.&lt;/P&gt;
&lt;P&gt;Μια άλλη λύση είναι να περάσεις το property Handle της φόρμας στον unmanaged κώδικα και να χρησιμοποιήσεις Win32 API,π.χ EnableWindow για να κάνεις disable την φόρμα.Αυτό όμως έχει δύο μειονεκτήματα:τα properties της φόρμας δεν θα έχουν απαραίτητα την σωστή τιμή και επιπλέον το Handle property μπορεί να αλλάξει σε ανύποπτο χρόνο από τη φόρμα σου (μερικές φορές κάνει recreate το handle) και να μην ισχύει πια η τιμή που έχεις περάσει στον unmanaged κώδικα.&lt;/P&gt;
&lt;P&gt;Όσον αφορά την βρώση κρέπας,εύχομαι η δυσάρεστη κατάληξη να μην σε αποτρέψει από ανάλογο εγχείρημα στο μέλλον.&lt;img src="http://www.dotnetzone.gr/cs/emoticons/emotion-33.gif" alt="Pizza" /&gt;&lt;/P&gt;</description></item><item><title>Απ: C++ συνάρτηση Sleep που καλείται από C#</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/52021.aspx</link><pubDate>Fri, 26 Jun 2009 22:55:49 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:52021</guid><dc:creator>m6s</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/52021.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=30&amp;PostID=52021</wfw:commentRss><description>Καταρχήν, ξανά σε ευχαριστώ για την ενασχόληση σου με το θέμα. Αργησα να απαντήσω, ένεκα γαστρεντερίτιδας...(μετά απο βρώση κρέπας, όπως έγραφε και η γνωμάτευση lol ).&lt;br&gt;&lt;br&gt;Δυστυχώς δεν μπορώ να δώσω κώδικα αυτούσιο, το όλο concept το έχεις όμως.&lt;br&gt;Η εφαρμογή ξεκινάει, ο κώδικας μέσα απο έλεγχο if ( t.isAlive() ) t.Join() else t.Start() οπου t είναι το thread του C++, ελέγχω ότι μια φορά εκτελείται ο κώδικας μέσα στην C++. Και είναι "sweet as a dream". Το μόνο που μου μεινε και που μου χαλάει την μαγεία, είναι το γεγονός, ότι χρησιμοποιώ τον timer της φόρμας, και δίνω ενα απειροελάχιστο this.Enabled = false, στην φόρμα. Με αποτέλεσμα, ενώ σε χρόνο dt ο C++ κώδικας επιστρέφει τιμή true, το interface κάνει flicker...&lt;br&gt;&lt;br&gt;Προκύπτει λοιπόν μια απορία...μπορώ να περάσω τον "pointer"(!) της φόρμας..C# στον κώδικα της C++, και να κάνω this.Enabled = true μέσα στη C++ ?&lt;br&gt;&lt;br&gt;&lt;br&gt;</description></item><item><title>Απ: C++ συνάρτηση Sleep που καλείται από C#</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/51948.aspx</link><pubDate>Tue, 23 Jun 2009 22:51:26 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:51948</guid><dc:creator>darklynx</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/51948.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=30&amp;PostID=51948</wfw:commentRss><description>&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;m6s:&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;Το πρόβλημα είναι σχεδόν αυτό όμως...Δηλαδή, να παγώσω όλο το interface θέλω. Παρόλο ότι πέτυχα ο timer να "βουτάει" στο κώδικα της dll, και παρόλο ότι πράγματι περιμένει το συγκεκριμένο κομμάτι κώδικα την εκτέλεση και επιστροφή απο το dll απάντησης, το υπόλοιπο interface έξω απο το timer, δεν σταματάει την λειτουργεία του. Το πρόβλημα είναι ότι θέλω και το main thread ( parent thread, να το πώ; ) να σταματάει...Οπότε προς το παρόν, μου προκύπτει μισή λύση...στο πρόβλημα...Καμιά ιδέα ακόμα; :-)&lt;BR&gt;&lt;/div&gt;&lt;/BLOCKQUOTE&gt;&lt;/P&gt;
&lt;P&gt;Αν απλά θες να απενεργοποιήσεις το UI το παλιό καλό οπλοστάσιο (disable της φόρμας,modal dialogs,progress bars κ.τ.λ) είναι παραπάνω από αρκετό.Αν το πρόβλημα είναι να συγχρονίσεις server και client τότε η λύση είναι να κάνεις το remoting σου ασύγχρονο.Ο timer από ότι περιγράφεις συγχρονισμό κάνει απλά όχι με τον καλύτερο τρόπο.Το συγκεκριμένο dll περιέχει το remoting object σου;Και πως ακριβώς το χρησιμοποιείς;Ίσως η δομή του project σε κάποιο σημείο είναι πιο πολύπλοκη από ότι χρειάζεται.Αν θες να κάνεις attach ένα τμήμα του κώδικα που να φανερώνει τη δομή του και κυρίως το πως υλοποιείς το remoting σίγουρα θα έχουμε ιδέες για να το βελτιώσεις.&lt;/P&gt;</description></item><item><title>Απ: C++ συνάρτηση Sleep που καλείται από C#</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/51941.aspx</link><pubDate>Tue, 23 Jun 2009 20:20:15 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:51941</guid><dc:creator>m6s</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/51941.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=30&amp;PostID=51941</wfw:commentRss><description>Τελικά....σώθηκα απο το πελαγοδρόμισμα ;-) χρησιμοποιώντας System.Windows.Forms.Timer ( που ευελπιστώ, να μην γίνει deprecated :-p )&lt;br&gt;Ευχαριστώ παιδιά!&lt;br&gt;</description></item><item><title>Απ: C++ συνάρτηση Sleep που καλείται από C#</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/51939.aspx</link><pubDate>Tue, 23 Jun 2009 19:57:22 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:51939</guid><dc:creator>KelMan</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/51939.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=30&amp;PostID=51939</wfw:commentRss><description>&lt;P&gt;Μου φαίνεται πελαγοδρομείς χωρίς λόγο. Κανονικά θα πρέπει όταν καλείς το web service να εμφανίζεις ένα modal dialog "please wait", ενδεχομένως με ένα cancel button, και όταν τελειώνει η κλήση να το εξαφανίζεις. Το modal dialog δεν θα επιτρέπει στο χρήστη να κάνει τίποτε άλλο πέρα από το να περιμένει. &lt;/P&gt;</description></item><item><title>Απ: C++ συνάρτηση Sleep που καλείται από C#</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/51938.aspx</link><pubDate>Tue, 23 Jun 2009 19:41:10 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:51938</guid><dc:creator>m6s</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/51938.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=30&amp;PostID=51938</wfw:commentRss><description>Το πρόβλημα είναι σχεδόν αυτό όμως...Δηλαδή, να παγώσω όλο το interface θέλω. Παρόλο ότι πέτυχα ο timer να "βουτάει" στο κώδικα της dll, και παρόλο ότι πράγματι περιμένει το συγκεκριμένο κομμάτι κώδικα την εκτέλεση και επιστροφή απο το dll απάντησης, το υπόλοιπο interface έξω απο το timer, δεν σταματάει την λειτουργεία του. Το πρόβλημα είναι ότι θέλω και το main thread ( parent thread, να το πώ; ) να σταματάει...Οπότε προς το παρόν, μου προκύπτει μισή λύση...στο πρόβλημα...Καμιά ιδέα ακόμα; :-)&lt;br&gt;</description></item><item><title>Απ: C++ συνάρτηση Sleep που καλείται από C#</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/51936.aspx</link><pubDate>Tue, 23 Jun 2009 08:40:19 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:51936</guid><dc:creator>darklynx</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/51936.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=30&amp;PostID=51936</wfw:commentRss><description>Χαίρομαι,είχα την απορία τι προκαλούσε το πρόβλημα αλλά&amp;nbsp;ο timer εξηγεί την κατάσταση.Πρόσεξε μόνο να βάλεις timeout στην join γιατί αν συμβεί οτιδήποτε που να κολλήσει την εκτέλεση του "χρονοβόρου" κώδικα θα έχεις deadlock στο main thread σου..</description></item><item><title>Απ: C++ συνάρτηση Sleep που καλείται από C#</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/51932.aspx</link><pubDate>Tue, 23 Jun 2009 03:05:50 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:51932</guid><dc:creator>m6s</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/51932.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=30&amp;PostID=51932</wfw:commentRss><description>Φίλτατε darklynx, το synchronized object που είπες με οδήγησε στην λύση. Το πρόβλημα ήταν ο timer (χρονόμετρο). Απλά το χρονόμετρο κάθε Χ δεύτερα ξεκίναγε νέο event χωρίς να ελέγχει αν το προήγουμενο τελείωσε. Με ένα στατικό locker όμως λύθηκε το θέμα, στο οποίο ξεκινάω το thread και ελέγχω αν είναι ήδη ενεργοποιημένο, να κάνει join() αλλιώς αν το isliving() είναι ψευδές, ξεκίνα νέα εκτέλεση του C++ κώδικα...&lt;br&gt;Ευχαριστώ.&lt;br&gt;</description></item><item><title>Απ: C++ συνάρτηση Sleep που καλείται από C#</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/51817.aspx</link><pubDate>Fri, 19 Jun 2009 00:30:28 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:51817</guid><dc:creator>m6s</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/51817.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=30&amp;PostID=51817</wfw:commentRss><description>Εφόσον η Sleep παγώνει την εκτέλεση του προγράμματος, προσπαθώ καλώντας την Sleep σε C,C++ dll, να "παγώσω" και τον κώδικα που εκτελείται σε C#, και ο οποίος καλεί την DLL. Ουσιαστικά να κάνω "unresponsive" τον server.&lt;br&gt;&lt;br&gt;Το ότι δίνω 2 διαφορετικές εντολές, στο τέλος είναι για να πεισθώ ότι συμβαίνει αυτό που δεν έχω βρεί γραμμένο...(ίσως να μου έχει ξεφύγει...) δηλαδή ότι πρέπει πολύ πιθανώς σε άλλο thread η C++ και σε άλλο thread ο C# κώδικας να εκτελείται....πράγμα...που δεν καταλαβαίνω γιατί...&lt;br&gt;&lt;br&gt;Και αν αυτό ισχύει, πώς τότε καλείς μια dll και περιμένεις η οποία δεν θές να κάνει ένα printf...ένα cout, αλλά να επεξεργαστεί κάτι να βγάλει αποτέλεσμα...και το αποτέλεσμα να το επιστρέψει στην C#. Και μόνο τότε η C# να προχωρήσει...αλλιώς να περιμένει...&lt;br&gt;</description></item><item><title>Απ: C++ συνάρτηση Sleep που καλείται από C#</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/51816.aspx</link><pubDate>Fri, 19 Jun 2009 00:20:17 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:51816</guid><dc:creator>darklynx</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/51816.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=30&amp;PostID=51816</wfw:commentRss><description>&lt;P&gt;Τι προσπαθείς να πετύχεις με αυτόν τον κώδικα;Προφανώς όχι να βάλεις τον client να κοιμηθεί για 10 δευτερόλεπτα γιατί απλά θα έδινες απευθείας την εντολή από αυτόν.Τι σκοπό εξυπηρετεί αυτό το unmanaged dll;Και γιατί δίνεις δύο διαφορετικές sleep εντολές;Ανάλογα με αυτόν τον σκοπό εξαρτάται και η λύση στο πρόβλημά σου,που θα μπορούσε π.χ να είναι απλά η χρήση ενός synchronization object.&lt;/P&gt;
&lt;P&gt;Από ότι είδα στον unmanaged κώδικα χρησιμοποίησες την Sleep με τέτοιο τρόπο σαν να περίμενες να συνεχίσει να εκτελείται ο κώδικας κάτω από αυτήν προτού τελειώσουν τα 10 δευτερόλεπτα,πράγμα που δεν ισχύει.Επίσης το dll σου και ο client σου είναι λογικά σε διαφορετικά threads.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description></item><item><title>C++ συνάρτηση Sleep που καλείται από C#</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/51813.aspx</link><pubDate>Thu, 18 Jun 2009 22:47:15 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:51813</guid><dc:creator>m6s</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/51813.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=30&amp;PostID=51813</wfw:commentRss><description>Καλημέρα!&lt;br&gt;&lt;br&gt;Υπήρξε μια φαεινή ιδέα, τις προάλλες και μου έχει κάψει τα εγκεφαλικά κύτταρα...όσα έχουν μείνει καλοκαιριάτικα! :-)&lt;br&gt;&lt;br&gt;Έχω μια εφαρμογή C# που αποτελείται απο ένα server και πολλά client μηχανάκια, τα οποία συνδέονται μέσω Remoting και παίρνουν διάφορα data ώστε να ρυθμιστούν ώς "πελάτες".&lt;br&gt;&lt;br&gt;Στόν server, υλοποιώ ένα μικρό snippet το οποίο το μόνο που κάνει είναι Sleep για την ακριβεία :&lt;br&gt;&lt;pre&gt;&lt;span style="color:Black;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;&lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;bool&lt;/span&gt; Class::CheckSleep(&lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;&lt;/span&gt;)
&lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;bool&lt;/span&gt; sleep &lt;span style="color:Red;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;=&lt;/span&gt; &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;true&lt;/span&gt;;
&lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;while&lt;/span&gt; (sleep) {
cout &amp;lt;&amp;lt; &lt;span style="font-family:Courier New;font-size:11px;font-weight:normal;"&gt;"Sleep in..."&lt;/span&gt; &amp;lt;&amp;lt; endl;
Sleep(10000)
cout &amp;lt;&amp;lt; &lt;span style="font-family:Courier New;font-size:11px;font-weight:normal;"&gt;"Sleep out."&lt;/span&gt; &amp;lt;&amp;lt; endl;
sleep &lt;span style="color:Red;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;=&lt;/span&gt; &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;false&lt;/span&gt;;
return true;&lt;br&gt;}&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;Το κάνα dll σίγουρα φορτώνεται απο τον C# κώδικα, και πραγματικά έχω και έξοδο στο τερματικό μηνυμάτων.&lt;br&gt;Παρόλαυτα...η κλήση της C++ συνάρτησης, που θεωρητικά παγώνει την εφαρμογή για 10sec(?), δεν παγώνει πραγματικά τίποτα.&lt;br&gt;Ο κώδικας C#, συνεχίζει απτότητα, και βλέπω μετά απο λίγo ..."Sleep out".&lt;br&gt;Στον κώδικα δε, της C# πρόσθεσα έπειτα και αυτό :&lt;br&gt;&lt;pre&gt;&lt;span style="color:Black;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;&lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;while&lt;/span&gt; ( CheckSleep(clientIP) ) {
                System.Threading.Thread.Sleep(2000);
            }&lt;/span&gt;&lt;/pre&gt;Ενοείται ότι η CheckSleep καλεί την ομόνυμη συνάρτηση στην dll.&lt;br&gt;Και πάλι όμως δεν πετυχαίνω τον κώδικα της C# να "παγώσει" μέχρι να βγεί η C++ απο τον "ύπνο" και την λούπα....&lt;br&gt;&lt;br&gt;Καμιά ιδέα...?&lt;br&gt;</description></item></channel></rss>