<?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>.NET Framework</title><link>https://www.dotnetzone.gr:443/cs/forums/14/ShowForum.aspx</link><description>Θέματα για threading, remoting, reflection, exception handling, security, regex κλπ.</description><dc:language>el</dc:language><generator>CommunityServer 2.1 SP3 (Build: 20423.1)</generator><item><title>Απ: Πέρσμα συνάρτησης ώς παραμέτρος σε συνάρτηση, χωρίς να με νοιάζει ο τύπος της.</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/49499.aspx</link><pubDate>Sun, 22 Mar 2009 04:52:19 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:49499</guid><dc:creator>Markos</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/49499.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=14&amp;PostID=49499</wfw:commentRss><description>Τι ακριβώς περνάς στο object[] array; θέλω να πω, οι παράμετροι είναι όλοι&amp;nbsp;του ιδίου type, π.χ. όλοι int ή όλοι string; Μήπως πριν καταφύγεις στη χρήση του &lt;EM&gt;Func&lt;/EM&gt; ή του &lt;EM&gt;Action&lt;/EM&gt; delegate να φτιάξεις μία κλάση Parameters για να περνάς τις παραμέτρους, αντί του object[] array; Κάτι τέτοιο θα σε διευκολύνει να κρατάς τους διαφορετικούς τύπους σε χωριστές λίστες&amp;nbsp;(π.χ. List&amp;lt;int&amp;gt;, List&amp;lt;string&amp;gt; κ.λπ.)&amp;nbsp;ή χωριστά arrays.</description></item><item><title>Απ: Πέρσμα συνάρτησης ώς παραμέτρος σε συνάρτηση, χωρίς να με νοιάζει ο τύπος της.</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/49495.aspx</link><pubDate>Sun, 22 Mar 2009 04:06:41 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:49495</guid><dc:creator>anjelinio</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/49495.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=14&amp;PostID=49495</wfw:commentRss><description>Είχα κάνει κι εγώ στο παρελθόν κάτι παρόμοιο, δες &lt;a href="http://www.dotnetzone.gr/cs/forums/thread/41682.aspx"&gt;αυτό&lt;/a&gt;, μήπως σε βοηθήσει σε κάτι. Το'χα post-άρει γιατί ήταν καλή ιδέα.&lt;br&gt;</description></item><item><title>Απ: Πέρσμα συνάρτησης ώς παραμέτρος σε συνάρτηση, χωρίς να με νοιάζει ο τύπος της.</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/49469.aspx</link><pubDate>Sat, 21 Mar 2009 04:38:08 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:49469</guid><dc:creator>pontifikas</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/49469.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=14&amp;PostID=49469</wfw:commentRss><description>Κατ' αρχήν ευχαριστώ για τις απαντήσεις.&lt;br&gt;&lt;b&gt;Μαρκο&lt;/b&gt;&lt;br&gt;Δυστυχώς στην ανάγκη να μπορώ να ακυρώσω την εκτέλεση της συνάρτησης, αποφάσισα να ξηλώσω την static υλοποίηση και να χρησιμοποιήσω instance οπότε&lt;br&gt;αυτό που μου πρότεινες, αν και για την προηγούμενη κατάσταση βόλευε, για την τρέχουσα δεν βολεύει αφού για κάθε διαφορετικό τύπο συνάρτησης πρέπει να δηλώσω&lt;br&gt;έναν νέο TimedExecutioner&amp;lt;Τ&amp;gt;.&lt;br&gt;&lt;table width="100%" border="0" cellpadding="0" cellspacing="0"&gt;&lt;tr style="vertical-align:top;line-height:normal;"&gt;&lt;td style="width:40px;text-align:right;"&gt;&lt;pre style="margin:0px;padding:2px;font-family:courier new;font-size:11px;color:gray;"&gt;1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
 &lt;/pre&gt;&lt;/td&gt;&lt;td&gt;&lt;pre style="margin:0px;padding:2px 2px 2px 8px;"&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;public&lt;/span&gt; &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;delegate&lt;/span&gt; &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;void&lt;/span&gt; FuctionCall(&lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;params&lt;/span&gt; &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;object&lt;/span&gt;[] pars);

&lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;public&lt;/span&gt; &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;class&lt;/span&gt; TimedExecutioner: Timer
        {
            &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;private&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; canExecute &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;private&lt;/span&gt; FuctionCall FuncToCall;
            &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;private&lt;/span&gt; &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;object&lt;/span&gt;[] FuncPars &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;null&lt;/span&gt;;

            &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;public&lt;/span&gt; TimedExecutioner()
            {
                
            }

            &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;protected&lt;/span&gt; &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;override&lt;/span&gt; &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;void&lt;/span&gt; OnTick(EventArgs e)
            {
                &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;base&lt;/span&gt;.OnTick(e);
                
                &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;if&lt;/span&gt;(canExecute)
                    FuncToCall(FuncPars);                
                
                &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;this&lt;/span&gt;.Stop();

                &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;this&lt;/span&gt;.FuncToCall &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;null&lt;/span&gt;;
                &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;this&lt;/span&gt;.FuncPars &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;null&lt;/span&gt;;
                &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;this&lt;/span&gt;.Interval &lt;span style="color:Red;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;=&lt;/span&gt; 1;
            }
            &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;public&lt;/span&gt; &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;void&lt;/span&gt; ExecFunctionInTime(&lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;int&lt;/span&gt; mSecs, FuctionCall func, &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;params&lt;/span&gt; &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;object&lt;/span&gt;[] FuncPars)
            {
                &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;this&lt;/span&gt;.FuncToCall &lt;span style="color:Red;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;=&lt;/span&gt; func;
                &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;this&lt;/span&gt;.FuncPars &lt;span style="color:Red;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;=&lt;/span&gt; FuncPars;
                &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;this&lt;/span&gt;.Interval &lt;span style="color:Red;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;=&lt;/span&gt; mSecs;
                &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;this&lt;/span&gt;.Start();
            }
            &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;public&lt;/span&gt; &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;void&lt;/span&gt; CancelPendingExecution()
            {
                canExecute &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;;
            }
        }&lt;/span&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br&gt;&lt;b&gt;Anjelinio&lt;br&gt;&lt;/b&gt;Χρησιμοποιώ v3.5 αλλά για να είμαι ειλικρινής δεν έχω ιδέα από delta expressions ούτε linq καθώς δεν παίζω με ΒΔ εδώ και καιρό (έχω αρχίσει ήδη όμως να το ψάχνω&lt;img src="http://www.dotnetzone.gr/cs/emoticons/emotion-1.gif" alt="Smile" /&gt;). Από λίγο που διάβασα, κατάλαβα τί παίζει με το delta και πώς θα γίνει η κλήση αλλά δεν κατάλαβα στην class πώς θα διαμορφωθεί η κατάσταση και πώς μπορεί να επιστραφεί και η int τιμή στην περίπτωση που ανέφερες. Πάντως βασικά με ενδιαφέρει η κλήση void συναρτήσεων οπότε και να μην καλύπτω τον επιστρεφόμενο τύπο δεν πειράζει(όχι ότι δεν έχω περιέργια πώς γίνεται &lt;img src="http://www.dotnetzone.gr/cs/emoticons/emotion-10.gif" alt="Embarrassed" /&gt; )&lt;br&gt;&lt;br&gt;Ευχαριστώ&lt;br&gt;</description></item><item><title>Απ: Πέρσμα συνάρτησης ώς παραμέτρος σε συνάρτηση, χωρίς να με νοιάζει ο τύπος της.</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/49442.aspx</link><pubDate>Fri, 20 Mar 2009 02:11:24 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:49442</guid><dc:creator>anjelinio</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/49442.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=14&amp;PostID=49442</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; Απλά ο φίλος μας δεν έχει ξεκαθαρίσει με ποια έκδοση του framework "παίζει" για να ξέρουμε αν μπορεί να χρησιμοποιήσει lamdas.&lt;/div&gt;&lt;/BLOCKQUOTE&gt;&lt;br&gt;&lt;br&gt;.. για δες πως γυρνάνε οι καιροί ... πριν 1.5 χρόνο ήμουν στην ανάποδη θέση ... σε 1.1 να μου προτείνουν λύσεις απο 2.0&amp;nbsp;&lt;img src="http://www.dotnetzone.gr/cs/emoticons/emotion-1.gif" alt="Smile" /&gt; &lt;br&gt;&lt;br&gt;Αναρωτιέμαι - δε θυμάμαι - αν οι dynamic delegates θα μπορούσαν να βοηθήσουν σε κάτι τέτοιο. Τέλος πάντων, το βραδάκι :]&lt;br&gt;</description></item><item><title>Απ: Πέρσμα συνάρτησης ώς παραμέτρος σε συνάρτηση, χωρίς να με νοιάζει ο τύπος της.</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/49439.aspx</link><pubDate>Fri, 20 Mar 2009 01:48:28 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:49439</guid><dc:creator>Markos</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/49439.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=14&amp;PostID=49439</wfw:commentRss><description>Δεν έχεις άδικο. Και το Func&amp;lt;T&amp;gt; delegate είναι. Απλά ο φίλος μας δεν έχει ξεκαθαρίσει με ποια έκδοση του framework "παίζει" για να ξέρουμε αν μπορεί να χρησιμοποιήσει lamdas.</description></item><item><title>Απ: Πέρσμα συνάρτησης ώς παραμέτρος σε συνάρτηση, χωρίς να με νοιάζει ο τύπος της.</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/49438.aspx</link><pubDate>Fri, 20 Mar 2009 01:34:04 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:49438</guid><dc:creator>anjelinio</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/49438.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=14&amp;PostID=49438</wfw:commentRss><description>Νομίζω, ότι με μια μικρή "χακιά" μπορείς να καλύψεις όλες τις περιπτώσεις σου. Απλώς θα πρέπει να κάνεις μια γραμμή processing πριν καλέσεις την ExecFunctionInTime(...)&lt;br&gt;&lt;br&gt;Πρώτα απο όλα, ξεφορτώσου το delegate σου ( FunctionCall&amp;lt;T&amp;gt; ), και χρησιμοποιήσε ένα Func&amp;lt;T&amp;gt; σαν παράμετρο. Τώρα, προτού καλέσεις την ExecInTime, όρισε ένα lambda το οποιό δημιουργείς επιτόπου, π.χ. ...&lt;br&gt;&lt;br&gt;Θέλω να καλέσω μια μέθοδο που λέγεται myOriginalFunction, η οποία επιστρέφει int, και έχει παραμέτρους int, string, bool, οκ; Έχω τις παραμέτρους μου σαν local variables, myInt, myString, myBool ... άρα μπορώ να κάνω το ... &lt;br&gt;&lt;br&gt;Func&amp;lt;int&amp;gt;&amp;nbsp; myParamFunc = (anInt, aString, aBool) =&amp;gt; return myOriginalFunction(anInt, aString, aBool); &lt;br&gt;&lt;br&gt;.. και άρα "καπάκια" μπορώ να κάνω το&amp;nbsp; ExecFunctionInTime&amp;lt;int&amp;gt;(1000, myParamFunc);&amp;nbsp;&amp;nbsp; &lt;br&gt;&lt;br&gt;&lt;br&gt;Δεν ξέρω αν χρειάζεσαι το generic param στην ExecuteInTime, μόνο αν σε νοιάζει σε κάτι το αποτέλεσμα φαντάζομαι, αλλά με αυτή τη μικρή ^%$^ καλύπτεσαι μια χαρά, και σε όλες τις περιπτώσεις. &lt;br&gt;&lt;br&gt;Ελπίζω να βοήθησα, καλό βράδυ μας&lt;br&gt;&lt;br&gt;&lt;br&gt;</description></item><item><title>Απ: Πέρσμα συνάρτησης ώς παραμέτρος σε συνάρτηση, χωρίς να με νοιάζει ο τύπος της.</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/49392.aspx</link><pubDate>Thu, 19 Mar 2009 05:05:12 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:49392</guid><dc:creator>Markos</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/49392.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=14&amp;PostID=49392</wfw:commentRss><description>&lt;P&gt;Γιατί δεν προσπαθείς ν' απαλλαγείς από το object type, κάπως έτσι:&lt;/P&gt;&lt;PRE&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;public&lt;/SPAN&gt; &lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;delegate&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; FuctionCall&amp;lt;T&amp;gt;(&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;params&lt;/SPAN&gt; T[] pars);

    &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;class&lt;/SPAN&gt; TimedExecutioner&amp;lt;T&amp;gt; : Timer
    {
        &lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;private&lt;/SPAN&gt; FuctionCall&amp;lt;T&amp;gt; FuncToCall;
        &lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;private&lt;/SPAN&gt; T[] FuncPars &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;null&lt;/SPAN&gt;;

        &lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;public&lt;/SPAN&gt; TimedExecutioner(FuctionCall&amp;lt;T&amp;gt; func, &lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;params&lt;/SPAN&gt; T[] FuncPars)
        {
            FuncToCall &lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:red;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;=&lt;/SPAN&gt; func;
            &lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;this&lt;/SPAN&gt;.FuncPars &lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:red;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;=&lt;/SPAN&gt; FuncPars;
        }
        &lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;protected&lt;/SPAN&gt; &lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;override&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; OnTick(EventArgs e)
        {
            &lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;base&lt;/SPAN&gt;.OnTick(e);
            FuncToCall(FuncPars);
            &lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;this&lt;/SPAN&gt;.Stop();
        }
        &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;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; ExecFunctionInTime(&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;int&lt;/SPAN&gt; mSecs, FuctionCall&amp;lt;T&amp;gt; func, &lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;params&lt;/SPAN&gt; T[] FuncPars)
        {
            TimedExecutioner&amp;lt;T&amp;gt; executioner &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; TimedExecutioner&amp;lt;T&amp;gt;(func, FuncPars);
            executioner.Interval &lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:red;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;=&lt;/SPAN&gt; mSecs;
            executioner.Start();
        }
    }&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;P&gt;Δοκίμασέ το να δεις αν παίζει και διόρθωσε τα σφάλματα όπου υπάρχουν.&lt;/P&gt;</description></item><item><title>Απ: Πέρσμα συνάρτησης ώς παραμέτρος σε συνάρτηση, χωρίς να με νοιάζει ο τύπος της.</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/49387.aspx</link><pubDate>Thu, 19 Mar 2009 03:32:18 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:49387</guid><dc:creator>pontifikas</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/49387.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=14&amp;PostID=49387</wfw:commentRss><description>Δεν μου φαίνεται ότι είναι αυτό που θέλω. Καλύπτει τον τύπο των παραμέτρων αλλά όχι τον αριθμό.Πώς θα μπορώ να έχω διαφορετικές συναρτήσεις 0 ή περισσοτέρων παραμέτρων χωρίς να χρειάζεται να δηλώσω μια νέα Generic Delegate?&lt;br&gt;&lt;br&gt;Βασικά έκανα και το εξής και μου φαίνεται ότι πλησίασα&lt;br&gt;&lt;table width="100%" border="0" cellpadding="0" cellspacing="0"&gt;&lt;tr&gt;&lt;td valign="top"&gt;&lt;br&gt;&lt;/td&gt;&lt;td valign="top"&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="vertical-align:top;line-height:normal;"&gt;&lt;td style="width:40px;text-align:right;"&gt;&lt;pre style="margin:0px;padding:2px;font-family:courier new;font-size:11px;color:gray;"&gt;1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
 &lt;/pre&gt;&lt;/td&gt;&lt;td&gt;&lt;pre style="margin:0px;padding:2px 2px 2px 8px;"&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;public&lt;/span&gt; &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;delegate&lt;/span&gt; &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;void&lt;/span&gt; FuctionCall(&lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;params&lt;/span&gt; &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;object&lt;/span&gt; [] pars);

&lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;public&lt;/span&gt; &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;class&lt;/span&gt; TimedExecutioner: Timer
        {
            &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;private&lt;/span&gt; FuctionCall FuncToCall;
            &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;private&lt;/span&gt; &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;object&lt;/span&gt;[] FuncPars &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;null&lt;/span&gt;;

            &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;public&lt;/span&gt; TimedExecutioner(FuctionCall func,&lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;params&lt;/span&gt; &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;object&lt;/span&gt; [] FuncPars)
            {
                FuncToCall &lt;span style="color:Red;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;=&lt;/span&gt; func;
                &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;this&lt;/span&gt;.FuncPars &lt;span style="color:Red;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;=&lt;/span&gt; FuncPars;
            }
            &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;protected&lt;/span&gt; &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;override&lt;/span&gt; &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;void&lt;/span&gt; OnTick(EventArgs e)
            {
                &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;base&lt;/span&gt;.OnTick(e);
                FuncToCall(FuncPars);                
                &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;this&lt;/span&gt;.Stop();
            }
            &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;public&lt;/span&gt; &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;static&lt;/span&gt; &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;void&lt;/span&gt; ExecFunctionInTime(&lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;int&lt;/span&gt; mSecs, FuctionCall func, &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;params&lt;/span&gt; &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;object&lt;/span&gt; [] FuncPars)
            {
                TimedExecutioner executioner &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;new&lt;/span&gt; TimedExecutioner(func,FuncPars);
                executioner.Interval &lt;span style="color:Red;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;=&lt;/span&gt; mSecs;
                executioner.Start();
            }
        }&lt;/span&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;Οπότε είναι δουλειά της κληθείσης συνάρτησης να διαχειριστεί τον αριθμό και τύπο των παραμέτρων που χρειάζεται.&lt;br&gt;&lt;br&gt;&lt;br&gt;</description></item><item><title>Απ: Πέρσμα συνάρτησης ώς παραμέτρος σε συνάρτηση, χωρίς να με νοιάζει ο τύπος της.</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/49369.aspx</link><pubDate>Thu, 19 Mar 2009 00:07:40 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:49369</guid><dc:creator>Markos</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/49369.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=14&amp;PostID=49369</wfw:commentRss><description>Αν κατάλαβα καλά θέλεις να φτιάξεις ένα &lt;A href="http://msdn.microsoft.com/en-us/library/sx2bwtw7.aspx"&gt;generic delegate&lt;/A&gt;. Αυτό ή κάτι άλλο;</description></item><item><title>Πέρσμα συνάρτησης ώς παραμέτρος σε συνάρτηση, χωρίς να με νοιάζει ο τύπος της.</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/49367.aspx</link><pubDate>Wed, 18 Mar 2009 23:43:13 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:49367</guid><dc:creator>pontifikas</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/49367.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=14&amp;PostID=49367</wfw:commentRss><description>Προσπαθώ να φτιάξω μια συνάρτηση που να δέχεται ώς παράμετρο μια συνάρτηση και έναν ακέραιο ο οποίος συμβολίζει χρόνο.&lt;br&gt;Η συνάρτηση θα ενεργοποιεί έναν timer Και μετά από τον ορισμένο χρόνο θα καλεί την συνάρτηση που της πέρασα σαν όρισμα.&lt;br&gt;Αυτό με delegates μπορώ να το κάνω αλλά πρέπει να φτιάξω ένα delegate Και ένα overload της καλούσας για κάθε τύπο κληθείσης.&lt;br&gt;πχ στον παρακ'ατω κώδικα έχω μια υλοποίηση για συνάρτηση που δέχεται ακέραιο και δεν επιστρέφει τίποτα.&lt;table width="100%" border="0" cellpadding="0" cellspacing="0"&gt;&lt;tr style="vertical-align:top;line-height:normal;"&gt;&lt;td style="width:40px;text-align:right;"&gt;&lt;pre style="margin:0px;padding:2px;font-family:courier new;font-size:11px;color:gray;"&gt;1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 &lt;/pre&gt;&lt;/td&gt;&lt;td&gt;&lt;pre style="margin:0px;padding:2px 2px 2px 8px;"&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;public&lt;/span&gt; &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;delegate&lt;/span&gt; &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;void&lt;/span&gt; FuctionCall(&lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;int&lt;/span&gt; par);

&lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;public&lt;/span&gt; &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;class&lt;/span&gt; TimedExecutioner: Timer
        {
            &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;private&lt;/span&gt; FuctionCall FuncToCall;
            
            &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;public&lt;/span&gt; TimedExecutioner(FuctionCall func)
            {
                FuncToCall &lt;span style="color:Red;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;=&lt;/span&gt; func;
            }

            &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;protected&lt;/span&gt; &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;override&lt;/span&gt; &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;void&lt;/span&gt; OnTick(EventArgs e)
            {
                &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;base&lt;/span&gt;.OnTick(e);
                FuncToCall(10);
                &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;this&lt;/span&gt;.Stop();
            }
            &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;public&lt;/span&gt; &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;static&lt;/span&gt; &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;void&lt;/span&gt; ExecFunctionInTime(FuctionCall func, &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;int&lt;/span&gt; mSecs)
            {
                TimedExecutioner executioner &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;new&lt;/span&gt; TimedExecutioner(func);
                executioner.Interval &lt;span style="color:Red;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;=&lt;/span&gt; mSecs;
                executioner.Start();
            }
        }&lt;/span&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;br&gt;Ευχαριστώ &lt;br&gt;</description></item></channel></rss>