<?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>Πρώτα Βήματα - Αρχές προγραμματισμού</title><link>https://www.dotnetzone.gr:443/cs/forums/72/ShowForum.aspx</link><description>Αναρωτιέστε τι σημαίνει object; Class; Inheritance; Design pattern; Την απάντηση μπορείτε να την βρείτε εδώ!</description><dc:language>el</dc:language><generator>CommunityServer 2.1 SP3 (Build: 20423.1)</generator><item><title>Απ: Πρόβλημα με Async σε richTextBox</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/69531.aspx</link><pubDate>Sat, 03 Mar 2012 10:16:32 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:69531</guid><dc:creator>Libra Storm</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/69531.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=72&amp;PostID=69531</wfw:commentRss><description>Δοκίμασε το παρακάτω και θα σου δουλέψει με Option strict on&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;table border="0" cellpadding="0" cellspacing="0" width="100%" style="background-color:#f2f2f2;border:solid 1px #e5e5e5;"&gt;&lt;tr style="vertical-align:top;line-height:normal;"&gt;&lt;td style="width:40px;text-align:right;"&gt;&lt;pre style="font-family:courier new;font-size:11px;color:gray;margin:0px;padding:2px;border-right:solid 1px #e7e7e7;"&gt;1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 &lt;/pre&gt;&lt;/td&gt;&lt;td&gt;&lt;pre style="margin:0px;padding:2px;padding-left: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;Private&lt;/span&gt; &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Sub&lt;/span&gt; Button1_Click(sender &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;As&lt;/span&gt; System.&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Object&lt;/span&gt;, e &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;As&lt;/span&gt; System.EventArgs) &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Handles&lt;/span&gt; Button1.Click
        &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Dim&lt;/span&gt; result &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;As&lt;/span&gt; IEnumerable(Of Tuple(Of &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;String&lt;/span&gt;, &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Integer&lt;/span&gt;, &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Integer&lt;/span&gt;))

        result &lt;span style="color:Red;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;=&lt;/span&gt; SearchWords(&lt;span style="color:#666666;background-color:#e4e4e4;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;"SELECT * FROM MyTable"&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; &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;String&lt;/span&gt;() {&lt;span style="color:#666666;background-color:#e4e4e4;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;"SELECT"&lt;/span&gt;, &lt;span style="color:#666666;background-color:#e4e4e4;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;"FROM"&lt;/span&gt;})

        &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;For&lt;/span&gt; &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Each&lt;/span&gt; r &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;As&lt;/span&gt; Tuple(Of &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;String&lt;/span&gt;, &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Integer&lt;/span&gt;, &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Integer&lt;/span&gt;) &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;In&lt;/span&gt; result
            Console.WriteLine(&lt;span style="color:#666666;background-color:#e4e4e4;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;"Value: {0} Index: {1} Length: {2}"&lt;/span&gt;, r.Item1, r.Item2, r.Item3)
        &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Next&lt;/span&gt;
    &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;End&lt;/span&gt; &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Sub&lt;/span&gt;

    &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Function&lt;/span&gt; SearchWords(&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;input&lt;/span&gt; &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;As&lt;/span&gt; &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;String&lt;/span&gt;, words &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;As&lt;/span&gt; &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;String&lt;/span&gt;()) &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;As&lt;/span&gt; IEnumerable(Of Tuple(Of &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;String&lt;/span&gt;, &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Integer&lt;/span&gt;, &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Integer&lt;/span&gt;))
        &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Dim&lt;/span&gt; pattern &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;As&lt;/span&gt; &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;String&lt;/span&gt; &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;String&lt;/span&gt;.&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Join&lt;/span&gt;(&lt;span style="color:#666666;background-color:#e4e4e4;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;"|"&lt;/span&gt;, words)
        &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Dim&lt;/span&gt; matches &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;As&lt;/span&gt; MatchCollection &lt;span style="color:Red;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;=&lt;/span&gt; Regex.Matches(&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;input&lt;/span&gt;, pattern)

        &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Dim&lt;/span&gt; indexes &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;As&lt;/span&gt; IEnumerable(Of Tuple(Of &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;String&lt;/span&gt;, &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Integer&lt;/span&gt;, &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Integer&lt;/span&gt;)) &lt;span style="color:Red;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;=&lt;/span&gt;
            From m &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;As&lt;/span&gt; Match &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;In&lt;/span&gt; matches.Cast(Of Match)()
            &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Select&lt;/span&gt; Tuple.Create(m.Value, m.Index, m.Length)

        &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Return&lt;/span&gt; indexes
    &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;End&lt;/span&gt; &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Function&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Το IEnumerable είναι Interface. Το συγκεκριμένο Interface μας βοηθάει στο να μπορούμε να κάνουμε for each σε μία σειρά ή ακολουθία από αντικείμενα όπως &amp;nbsp;πχ τα controls μίας φόρμας ή τις γραμμές ενός Datatable. Στο συγκεκριμένο παράδειγμα δεν θα μπορούσα να κάνω for each αν το function δεν γύρναγε το Interface αυτό ή κάποιο άλλο class που να το περιέχει (ή πιό σωστά να το κάνει implements).&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Το tuple είναι μία δομή που μας βοηθάει να οργανώνουμε πληροφορίες σε μία "σειρά". ΠΧ αν θέλουμε να περάσουμε πολλά byref σαν παραμέτρους σε ένα function μπορούμε να το χρησιμοποιήσουμε. Επίσης σε περίπτωση που ένα function θέλουμε να γυρνάει πληροφορίες γιά κάτι, πχ τα στοιχεία ενός πελάτη (όνομα τηλέφωνο διεύθυνση κλπ) μπορούμε επίσης να το χρησιμοποιήσουμε.&amp;nbsp;Το μοναδικό του "Μειονέκτημα" είναι ότι πρέπει να ξέρουμε τι πληροφορία πρέπει να βάλουμε στα στοιχεία του αφού αναφέρεται σε αυτά (όπως στο παράδειγμα) σαν item1, item2 κλπ.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;To μυστήριο μύνημα "exception has been thrown bla bla bla" &amp;nbsp;πάει να πει ότι λές σε κάποιον να κάτι, δεν τα καταφέρνει και αντί να σου πει γιατί δεν τα κατάφερε σου λέει απλά ότι δεν δεν τα κατάφερε... Παράδειγμα:&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;table border="0" cellpadding="0" cellspacing="0" width="100%" style="background-color:#f2f2f2;border:solid 1px #e5e5e5;"&gt;&lt;tr style="vertical-align:top;line-height:normal;"&gt;&lt;td style="width:40px;text-align:right;"&gt;&lt;pre style="font-family:courier new;font-size:11px;color:gray;margin:0px;padding:2px;border-right:solid 1px #e7e7e7;"&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
39
 &lt;/pre&gt;&lt;/td&gt;&lt;td&gt;&lt;pre style="margin:0px;padding:2px;padding-left: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;Option&lt;/span&gt; &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Strict&lt;/span&gt; &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;On&lt;/span&gt;
&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Option&lt;/span&gt; Infer &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Off&lt;/span&gt;

&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Imports&lt;/span&gt; System.Reflection

&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; Form1
    &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;Sub&lt;/span&gt; Button1_Click(sender &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;As&lt;/span&gt; System.&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Object&lt;/span&gt;, e &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;As&lt;/span&gt; System.EventArgs) &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Handles&lt;/span&gt; Button1.Click
        &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Try&lt;/span&gt;
            &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Dim&lt;/span&gt; oResult &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;As&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;
            &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Dim&lt;/span&gt; div &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;As&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; Division

            oResult &lt;span style="color:Red;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;=&lt;/span&gt; div.GetType.InvokeMember(
                &lt;span style="color:#666666;background-color:#e4e4e4;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;"Divide"&lt;/span&gt;,
                BindingFlags.InvokeMethod &lt;span style="color:Red;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Or&lt;/span&gt;
                    BindingFlags.NonPublic &lt;span style="color:Red;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Or&lt;/span&gt;
                    BindingFlags.Instance,
                Type.DefaultBinder,
                div,
                {10, 0})

            MessageBox.Show(oResult.ToString)
        &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Catch&lt;/span&gt; ex &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;As&lt;/span&gt; Exception
            &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;If&lt;/span&gt; ex.InnerException IsNot &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Nothing&lt;/span&gt; &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Then&lt;/span&gt;
                MessageBox.Show(ex.InnerException.ToString) &lt;span style="color:Green;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;' Το exception που προκάλεσε το Invocation exception.&lt;/span&gt;
            &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;End&lt;/span&gt; &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;If&lt;/span&gt;

            MessageBox.Show(ex.ToString) &lt;span style="color:Green;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;End&lt;/span&gt; &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Try&lt;/span&gt;
    &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;End&lt;/span&gt; &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Sub&lt;/span&gt;
&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;End&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;

&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; Division
    &lt;span style="color:Green;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;' Μήπως παρατηρείς τίποτα "παράξενο"&lt;/span&gt;
    &lt;span style="color:Green;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;Private&lt;/span&gt; _
    &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Function&lt;/span&gt; Divide(x &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;As&lt;/span&gt; &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Integer&lt;/span&gt;, y &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;As&lt;/span&gt; &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Integer&lt;/span&gt;) &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;As&lt;/span&gt; &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Integer&lt;/span&gt;
        &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Return&lt;/span&gt; x \ y
    &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;End&lt;/span&gt; &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Function&lt;/span&gt;
&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;End&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;&lt;/span&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Το inner Exception στο παράδειγμα σου λέει τι πραγματικά συνέβη.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Όσον αφορά την περίπτωση που εσύ λες ότι μπoρεί κάποιος να έχει ένα σενάριο 12000000 γραμμών σε ένα RichTextBox, μπορεί σε κάποιο μηχάνημα να δουλεύει αλλά στο δικό μου θα βγει το CPU από το τροφοδοτικό (μαζί με τις μνήμες).&lt;/div&gt;&lt;div&gt;ϊσως θα μπορούσες να γράψεις το κατεβατό σε αρχείο και να το διαβάζεις κομμάτι κομμάτι κάνωντας και τις αλλαγές στα χρώματα, έτσι θα κερδίσεις και μνήμη και ταχύτητα. Υπάρχει ένα μεγάλο πρόβλημα με το richtextbox βέβαια, το ότι δεν ξέρεις την τιμή που έχει το Scrollbar ή την θέση του cursor γιά να προφορτώσεις τις επόμενες σελίδες και &amp;nbsp;η ταχύτητα που μπορεί κάποιος να το ανεβοκατεβαζει να είναι τόσο μεγάλη, που να μην μπορείς να διαβάσεις γρήγορα το αρχείο και να δείξεις το τμήμα που αντιστοιχεί στην συγκεκριμένη θέση. Δεν μου έχει τύχει παρόμοια περίπτωση με τόσο μεγάλα αρχεία γιά να είμαι ειλικρινής.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Το async και το await είναι βολικά αλλά και τα Task από μόνα τους δεν είναι δύσχρηστα. Το παρακάτω παράδειγμα σου λέει πως να φτιάξεις ένα class το οποίο εκτελεί ένα Sub και μόλις τελειώσει σου στέλνει ένα event. Η νοοτροπία του να βάζουμε τέτοιες διαδικασίες σε classes είναι πολύ καλή κατά την γνώμη μου. Καλά είναι και τα Async await αλλά φοβάμαι ότι η αλόγιστη χρήση τους μπορεί ναι οδηγήσει σε δυσανάγνωστο κώδικα.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;table border="0" cellpadding="0" cellspacing="0" width="100%" style="background-color:#f2f2f2;border:solid 1px #e5e5e5;"&gt;&lt;tr style="vertical-align:top;line-height:normal;"&gt;&lt;td style="width:40px;text-align:right;"&gt;&lt;pre style="font-family:courier new;font-size:11px;color:gray;margin:0px;padding:2px;border-right:solid 1px #e7e7e7;"&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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
 &lt;/pre&gt;&lt;/td&gt;&lt;td&gt;&lt;pre style="margin:0px;padding:2px;padding-left: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;Option&lt;/span&gt; &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Strict&lt;/span&gt; &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;On&lt;/span&gt;
&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Option&lt;/span&gt; Infer &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Off&lt;/span&gt;

&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Imports&lt;/span&gt; System.Threading.Tasks

&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; Form1
    &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;Sub&lt;/span&gt; Button1_Click(sender &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;As&lt;/span&gt; System.&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Object&lt;/span&gt;, e &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;As&lt;/span&gt; System.EventArgs) &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Handles&lt;/span&gt; Button1.Click
        &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Try&lt;/span&gt;
            &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Me&lt;/span&gt;.Text &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:#666666;background-color:#e4e4e4;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;"Start"&lt;/span&gt;
            &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Dim&lt;/span&gt; t &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;As&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; NotifyTask(&lt;span style="color:Red;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;AddressOf&lt;/span&gt; DoSomething, &lt;span style="color:Red;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;AddressOf&lt;/span&gt; TaskFinished)

            &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Me&lt;/span&gt;.Button1.Enabled &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 style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Catch&lt;/span&gt; ex &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;As&lt;/span&gt; Exception
            MessageBox.Show(ex.ToString)
        &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;End&lt;/span&gt; &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Try&lt;/span&gt;
    &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;End&lt;/span&gt; &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Sub&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; &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Sub&lt;/span&gt; DoSomething()
        Threading.Thread.Sleep(3000)
    &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;End&lt;/span&gt; &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Sub&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; &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Sub&lt;/span&gt; TaskFinished(sender &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;As&lt;/span&gt; System.&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Object&lt;/span&gt;, e &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;As&lt;/span&gt; System.EventArgs)
        &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Try&lt;/span&gt;
            &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Me&lt;/span&gt;.Text &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:#666666;background-color:#e4e4e4;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;"Done"&lt;/span&gt;
            &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Me&lt;/span&gt;.Button1.Enabled &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:Green;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;' Δεν χρειάζεται να κάνεις invoke δες παρακάτω γιατί.&lt;/span&gt;
        &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Catch&lt;/span&gt; ex &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;As&lt;/span&gt; Exception
            MessageBox.Show(ex.ToString)
        &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;End&lt;/span&gt; &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Try&lt;/span&gt;
    &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;End&lt;/span&gt; &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Sub&lt;/span&gt;
&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;End&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;

&lt;span style="color:Green;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;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; NotifyTask
    &lt;span style="color:Green;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;' Θα μπορούσες να κληρονομήσεις το EventArgs και να φτιάξεις δικό σου, &lt;/span&gt;
    &lt;span style="color:Green;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;' π.χ. TaskEventArgs γιά να σου γυρίζει και το Task με τα όποια λάθη έχει και, &lt;/span&gt;
    &lt;span style="color:Green;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;' να το περάσεις σαν παράμετρο στην WhenFinished As EventHandler(Of TaskEventArgs).&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; &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Sub&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;(SubToCall &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;As&lt;/span&gt; Action, WhenFinished &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;As&lt;/span&gt; EventHandler(Of EventArgs))
        &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Try&lt;/span&gt;
            &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;If&lt;/span&gt; SubToCall &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Is&lt;/span&gt; &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Nothing&lt;/span&gt; &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Then&lt;/span&gt; &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Throw&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; ArgumentNullException(&lt;span style="color:#666666;background-color:#e4e4e4;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;"SubToCall"&lt;/span&gt;)

            &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;AddHandler&lt;/span&gt; &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Me&lt;/span&gt;.TaskEnd, WhenFinished

            Task.Factory.StartNew(SubToCall).
                ContinueWith(&lt;span style="color:Red;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;AddressOf&lt;/span&gt; EndTask, TaskScheduler.FromCurrentSynchronizationContext)

            &lt;span style="color:Green;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;' Αν σε δυσκολεύει η παραπάνω σύνταξη δες αυτήν.&lt;/span&gt;
            &lt;span style="color:Green;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;''Dim tsk As Task = Task.Factory.StartNew(SubToCall)&lt;/span&gt;
            &lt;span style="color:Green;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;''Dim tsk2 As Task = tsk.ContinueWith(AddressOf EndTask, TaskScheduler.FromCurrentSynchronizationContext)&lt;/span&gt;

            &lt;span style="color:Green;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;' Οι παραπάνω 2 γραμμές λένε:&lt;/span&gt;
            &lt;span style="color:Green;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;' 1. Ξεκίνα ένα task που θα τρέξει σε νέο thread και&lt;/span&gt;
            &lt;span style="color:Green;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;' 2. μόλις τελειώσει, συνέχισε (ContinueWith) με ένα άλλο Task που θα τρέξει στο thread από το οποίο φτιάχτηκε το Class NotifyTask.&lt;/span&gt;
            &lt;span style="color:Green;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;'    (Στην δική μας περίπτωση στο κυρίως Thread).&lt;/span&gt;

            &lt;span style="color:Green;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;' Γιά αυτόν τον λόγο βάλαμε το "μυστήριο" TaskScheduler.FromCurrentSynchronizationContext σαν παράμετρο στο 2ο Task.&lt;/span&gt;
            &lt;span style="color:Green;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;' Με αυτόν τον τρόπο όταν κληθεί το Sub TaskFinished από το TaskEnd event, δεν χρειάζεται να κάνεις Me.InvokeRequired και invoke,&lt;/span&gt;
            &lt;span style="color:Green;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;' γιατί θα τρέξει στο thread που φτιάξαμε το UI (User Interface).&lt;/span&gt;
        &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Catch&lt;/span&gt;
            &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Throw&lt;/span&gt;
        &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;End&lt;/span&gt; &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Try&lt;/span&gt;
    &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;End&lt;/span&gt; &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Sub&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; &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Event&lt;/span&gt; TaskEnd &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;As&lt;/span&gt; EventHandler(Of EventArgs)

    &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;Sub&lt;/span&gt; EndTask(&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;ByVal&lt;/span&gt; task &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;As&lt;/span&gt; Task)
        &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;RaiseEvent&lt;/span&gt; TaskEnd(&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Me&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; EventArgs)
    &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;End&lt;/span&gt; &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Sub&lt;/span&gt;
&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;End&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;&lt;/span&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;</description></item><item><title>Απ: Πρόβλημα με Async σε richTextBox</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/69440.aspx</link><pubDate>Fri, 24 Feb 2012 22:56:43 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:69440</guid><dc:creator>AlKiS</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/69440.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=72&amp;PostID=69440</wfw:commentRss><description>&lt;p&gt;Στο Function μου βγάζει πρόβλημα. Έκανα αλλαγή αλλά και πάλι δεν το παίρνει.&lt;/p&gt;&lt;p&gt;&lt;table border="0" cellpadding="0" cellspacing="0" width="100%" style="background-color:#f2f2f2;border:solid 1px #e5e5e5;"&gt;&lt;tr style="vertical-align:top;line-height:normal;"&gt;&lt;td style="width:40px;text-align:right;"&gt;&lt;pre style="font-family:courier new;font-size:11px;color:gray;margin:0px;padding:2px;border-right:solid 1px #e7e7e7;"&gt;1
2
3
4
5
6
7
8
 &lt;/pre&gt;&lt;/td&gt;&lt;td&gt;&lt;pre style="margin:0px;padding:2px;padding-left: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;Function&lt;/span&gt; SearchWords(&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;input&lt;/span&gt; &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;As&lt;/span&gt; &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;String&lt;/span&gt;, words &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;As&lt;/span&gt; &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;String&lt;/span&gt;()) &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;As&lt;/span&gt; IEnumerable(Of Tuple(Of &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;String&lt;/span&gt;, &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Integer&lt;/span&gt;, &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Integer&lt;/span&gt;))

        &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Dim&lt;/span&gt; pattern &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;As&lt;/span&gt; &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;String&lt;/span&gt; &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;String&lt;/span&gt;.&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Join&lt;/span&gt;(&lt;span style="color:#666666;background-color:#e4e4e4;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;"|"&lt;/span&gt;, words)
        &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Dim&lt;/span&gt; matches &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;As&lt;/span&gt; System.Text.RegularExpressions.MatchCollection &lt;span style="color:Red;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;=&lt;/span&gt; Regex.Matches(&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;input&lt;/span&gt;, pattern)
        &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Dim&lt;/span&gt; indexes &lt;span style="color:Red;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;=&lt;/span&gt; From &lt;/span&gt;&lt;font size="4"&gt;&lt;em&gt;&lt;strong&gt;&lt;u&gt;&lt;span style="color:Black;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;m &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;As&lt;/span&gt; Match&lt;/span&gt;&lt;/u&gt;&lt;/strong&gt;&lt;/em&gt;&lt;/font&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;In&lt;/span&gt; matches
                      &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Select&lt;/span&gt; Tuple.Create(m.Value, m.Index, m.Length)
        &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Return&lt;/span&gt; indexes
    &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;End&lt;/span&gt; &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Function&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/p&gt;&lt;p&gt;πρόβλημα:&amp;nbsp;Error	1	Option Strict On disallows implicit conversions from 'Object' to 'System.Text.RegularExpressions.Match'.	C:\Users\Giannis M\Dropbox\Visual Basic 2010\Projects\StatREC\StatREC\frmMain.vb	941	28	StatREC&lt;br&gt;&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;Ακόμα κι αν βάλω "&lt;span style="color:blue;"&gt;Dim&lt;/span&gt;&amp;nbsp;indexes&amp;nbsp;&lt;span style="color:blue;"&gt;As&lt;/span&gt;&amp;nbsp;System.Text.RegularExpressions.&lt;span style="color:#2b91af;"&gt;Match&lt;/span&gt;&amp;nbsp;=&amp;nbsp;&lt;span style="color:blue;"&gt;From&lt;/span&gt;&amp;nbsp;m&amp;nbsp;&lt;span style="color:blue;"&gt;As&lt;/span&gt;&amp;nbsp;&lt;span style="color:#2b91af;"&gt;Match&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;In&lt;/span&gt; matches" πάλι το ίδιο μου λέει. Δεν καταλαβαίνω γιατί.&amp;nbsp;&lt;/p&gt;&lt;p&gt;Χρηάζομαι επίσης επεξήγηση στα εξής:&lt;/p&gt;&lt;p&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;As&lt;/span&gt; IEnumerable, τι είναι αυτο???&lt;/span&gt;
&lt;/p&gt;&lt;p&gt;
&lt;span style="color:Black;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Of Tuple, Τι είναι αυτό? τη λέξη αυτή δεν την ξέρω καν στα αγγλικά.&lt;/span&gt;
&lt;span style="color:Black;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;&lt;br&gt;&lt;/span&gt;&lt;/p&gt;</description></item><item><title>Απ: Πρόβλημα με Async σε richTextBox</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/69438.aspx</link><pubDate>Fri, 24 Feb 2012 22:17:34 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:69438</guid><dc:creator>AlKiS</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/69438.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=72&amp;PostID=69438</wfw:commentRss><description>&lt;p&gt;Πολύ ωραίο αυτό!&amp;nbsp;&lt;/p&gt;&lt;p&gt;Μπορώ να ενοποιήσω λοιπόν όλα τα searches που έχω για το συγκεκριμένο rtb σε ένα και μόνο (αφού αυτά αλλάζουν τα ίδια χρώματα και bold στο κείμενο).&lt;/p&gt;&lt;p&gt;Ευχαριστώ πολύ για τον κώδικα! Θα τον δω, θα τον προσαρμόσω στο πρόγραμμά μου, και κατόπιν θα κάνω πόστ το αποτέλεσμα.&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;Μια τελευταία ερώτηση: Ποια εντολή είναι LINQ? (δυστυχώς δεν είχα χρόνο να διαβάσω για LINQ ακόμα, αλλά έχω σημειωμένο να το κάνω)&lt;/p&gt;</description></item><item><title>Απ: Πρόβλημα με Async σε richTextBox</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/69437.aspx</link><pubDate>Fri, 24 Feb 2012 21:52:03 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:69437</guid><dc:creator>Παναγιώτης Καναβός</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/69437.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=72&amp;PostID=69437</wfw:commentRss><description>Αν κάτι χρειάζεται async είναι η ColoriseRTB. Αυτό όμως δεν γίνεται καθώς ο κώδικας έχει τα ίδια προβλήματα με τον προηγούμενο. Η ColoriseRTB εξακολουθεί να "πειράζει" τα controls οπότε απαιτείται Invoke. Επιπλέον, η Colorise κάνει δύο πράγματα, ψάχνει για λέξεις και αλλάζει τα controls. Αυτό είναι λάθος σχεδιασμός και ένα από τα αποτελέσματα του είναι ότι δεν μπορεί να εκτελεστεί ασύγχρονα.&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Τουλάχιστον αυτή η μέθοδος θα πρέπει να σπάσει στα δύο, μία SearchWords η οποία θα έχει ως παρεμέτρους τις γραμμές που πρέπει να αναζητηθούν και θα επιστρέφει τα locations, και μία colorize η οποία με βάση αυτή τη λίστα θα αλλάζει το χρώμα των λέξεων. Η SearchWords άνετα μπορεί να εκτελεστεί ασύγχρονα. Η Colorize όχι.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Μπορούν να γίνουν και άλλες απλοποιήσεις, όπως πχ. να χρησιμοποιηθεί η RichTextBox.Select αντί για την αλλαγή των selection μέσω properties, για να μειωθούν οι καθυστερήσεις που οφείλονται στην επεξεργασία των αλλαγών των properties (π.χ. changed events, πιθανά redraws).&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Τέλος, αν ο αριθμός των λέξεων είναι μικρός μπορείς να χρησιμοποιήσεις pattern matching για να ψάξεις για όλες με μία κλήση της Matches, π.χ. Regex.Matches(input, "Word1|Word2|Word3").&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Μπορείς να φτιάξεις ένα function το οποίο θα φτιάχνει ένα pattern ενώνοντας όλες τις λέξεις με διαχωριστικό το '|' και θα επιστρέφει τα αποτελέσματα όπως παρακάτω:&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&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;Function&lt;/span&gt; SearchWords(&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;input&lt;/span&gt; &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;As&lt;/span&gt; &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;String&lt;/span&gt;, words &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;As&lt;/span&gt; &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;String&lt;/span&gt;()) &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;As&lt;/span&gt; IEnumerable(Of Tuple(Of &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;String&lt;/span&gt;, &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Integer&lt;/span&gt;, &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Integer&lt;/span&gt;))
        &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Dim&lt;/span&gt; pattern &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;String&lt;/span&gt;.&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Join&lt;/span&gt;(&lt;span style="color:#666666;background-color:#e4e4e4;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;"|"&lt;/span&gt;, words)
        &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Dim&lt;/span&gt; matches &lt;span style="color:Red;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;=&lt;/span&gt; Regex.Matches(&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;input&lt;/span&gt;, pattern)
        &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Dim&lt;/span&gt; indexes &lt;span style="color:Red;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;=&lt;/span&gt; From m &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;As&lt;/span&gt; Match &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;In&lt;/span&gt; matches
                      &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Select&lt;/span&gt; Tuple.Create(m.Value, m.Index, m.Length)
        &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Return&lt;/span&gt; indexes
    &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;End&lt;/span&gt; &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Function&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Εδώ χρησιμοποιώ και λίγο LINQ για να επιστρέψω τα αποτελέσματα που θέλω χωρίς να φτιάξω ξεχωριστή κλάση&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Μετά μπορώ άνετα να κάνω αναζήτηση με μία μόνο κλήση, για όλες τις λέξεις όπως παρακάτω:&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&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;Dim&lt;/span&gt; text &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:#666666;background-color:#e4e4e4;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;"This is some text I want to search. Try to find some words here"&lt;/span&gt;
        &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Dim&lt;/span&gt; search &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;As&lt;/span&gt; &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;String&lt;/span&gt;() &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:#666666;background-color:#e4e4e4;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;"some"&lt;/span&gt;, &lt;span style="color:#666666;background-color:#e4e4e4;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;"to"&lt;/span&gt;}

        &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Dim&lt;/span&gt; results &lt;span style="color:Red;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;=&lt;/span&gt; SearchWords(text, search)

        &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;For&lt;/span&gt; &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Each&lt;/span&gt; result &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;In&lt;/span&gt; results
            Console.WriteLine(&lt;span style="color:#666666;background-color:#e4e4e4;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;"Found {0} at {1}:{2}"&lt;/span&gt;, result.Item1, result.Item2, result.Item3)
        &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Next&lt;/span&gt;
        Console.ReadKey()&lt;/span&gt;&lt;/pre&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;</description></item><item><title>Απ: Πρόβλημα με Async σε richTextBox</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/69436.aspx</link><pubDate>Fri, 24 Feb 2012 21:33:14 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:69436</guid><dc:creator>Markos</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/69436.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=72&amp;PostID=69436</wfw:commentRss><description>Μισό λεπτό για να καταλάβω... Κάνεις σύγκριση κατανομών; Αν ναι, δώσε ένα παράδειγμα με το είδος των αναζητήσεων που κάνεις. Πιθανόν το να σου έρχονται τα αποτελέσματα σε λίστα να είναι προτιμότερο από να χρωματίζεις το RTB.&lt;br&gt;</description></item><item><title>Απ: Πρόβλημα με Async σε richTextBox</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/69435.aspx</link><pubDate>Fri, 24 Feb 2012 21:07:54 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:69435</guid><dc:creator>AlKiS</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/69435.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=72&amp;PostID=69435</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;Markos:&lt;/strong&gt;&lt;/div&gt;&lt;div&gt; Και θα συνεχίσεις να έχεις πρόβλημα όσο αρνείσαι να κατανοήσεις ότι το πρόβλημά σου είναι πρωτίστως αλγοριθμικό και δευτερευόντως (αλλά ΠΟΛΥ δευτερευόντως) προγραμματιστικό. Ο λόγος είναι απλός: Σε προβλήματα μεταθέσεων (permutations) και συνδυασμών (combinations) ΔΕΝ υπάρχει worst case scenario.&lt;br&gt;&lt;br&gt;Πάρε για παράδειγμα ένα string permutation πρόβλημα με 15 strings {s1, s2,..., s15}. Το πλήθος των permutations είναι 1307674368000. Αν θέλεις να κάνεις search για να βρεις τα permutations με γενικό σχήμα {*,s4,s12} είναι ΠΟΛΥ προτιμότερο να τα παράγεις από την αρχή. Στην ουσία αυτό που πρέπει να κάνεις είναι να ανάγεις το search σε permutation πρόβλημα δεκατριών strings και να προσθέσεις στο τέλος τα s4 και s12. Στο πρόβλημα των 13, το σύνολο των permutations είναι 6227020800 (το 0,48% του συνόλου του αρχικού προβλήματος των 15). Το search, λοιπόν, στο αρχικό σύνολο είναι ασύμφορο. Επιπλέον, είναι εντελώς παράλογο να κρατάς τόσα πολλά δεδομένα στη μνήμη. Και το παράδειγμα που ανέφερα είναι πολύ απλό. Σε πιο σύνθετες αναζητήσεις, η προσέγγιση πρέπει να είναι πιο εκλεπτυσμένη από ένα μετωπικό brute force, αλλιώς δεν θα τελειώσεις ποτέ!
&lt;/div&gt;&lt;/BLOCKQUOTE&gt;
&lt;/p&gt;&lt;p&gt;
&lt;p&gt;Τα permutations δεν γίνονται σε αυτό τον αλγόριθμο! Ότι ήταν να γίνει με permutation έχει ήδη γίνει. Έχει περάσει στην R (γλώσσα προγραμματισμού), έχω ήδη πάρει πίσω αποτελέσματα για kolmogorov και τα λοιπά... είναι άσχετο αυτό.&lt;/p&gt;&lt;p&gt;Τα permutations γίνονται πολύ γρήγορα. Πρόβλημα έχω στο να χρωματίσω το κείμενο...&lt;/p&gt;&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;Markos:&lt;/strong&gt;&lt;/div&gt;&lt;div&gt; 
Τώρα, το προγραμματιστικό σου πρόβλημα ακούει στο όνομα RTB. Ό,τι χειρότερο. Άκουσε τον Παναγιώτη και ακολούθησε τη συμβουλή του και βάζε τα permutations σε λίστα. Διαφορετικά, καμία τεχνική threading δεν πρόκειται να σε σώσει. Αν θέλεις, για να καταλάβουμε κι εμείς καλύτερα τι θέλεις να κάνεις, δώσε μας ένα παράδειγμα με τα permutations που παράγεις και τις αναζητήσεις που κάνεις.&lt;br&gt;&lt;/div&gt;&lt;/BLOCKQUOTE&gt;&lt;/p&gt;&lt;p&gt;Επίσης, έχω ακολουθήσει αυτό που μου είπαν, και δεν κάνω search πάνω στο κείμενο του rtb, αλλά σε string. Κοίτα τον τελευταίο κώδικα που έγραψα και θα το δεις.&lt;br&gt;&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Υ.Γ. Nikos123 μην μπερδευτείς με το μήνυμα αυτό που έγραψα. Οι ερωτήσεις που έχω στο προηγούμενο μήνυμα ισχύουν ακόμα.&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;br&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Ευχαριστώ πολύ και τους 2 για την προσπάθειά σας να με βοηθήσετε :)&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Απ: Πρόβλημα με Async σε richTextBox</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/69434.aspx</link><pubDate>Fri, 24 Feb 2012 20:59:51 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:69434</guid><dc:creator>Markos</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/69434.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=72&amp;PostID=69434</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;AlKiS:&lt;/strong&gt;&lt;/div&gt;&lt;div&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;nikos123:&lt;/strong&gt;&lt;/div&gt;&lt;div&gt; Εσένα κάνει αυτά που θες (και σχετικά γρήγορα) το πρόγραμμα;&lt;br&gt;&lt;p&gt;&lt;/div&gt;&lt;/BLOCKQUOTE&gt;&lt;/p&gt;&lt;p&gt;Ναι, πολύ πιο γρήγορα απότι πριν. Αλλά για Β&amp;gt;400 κολλάει πολύ και πάλι. Γιαυτό πρέπει να το κάνω σε Async.&lt;/p&gt;&lt;p&gt;
&lt;/p&gt;&lt;/div&gt;&lt;/BLOCKQUOTE&gt;&lt;br&gt;&lt;br&gt;Και θα συνεχίσεις να έχεις πρόβλημα όσο αρνείσαι να κατανοήσεις ότι το πρόβλημά σου είναι πρωτίστως αλγοριθμικό και δευτερευόντως (αλλά ΠΟΛΥ δευτερευόντως) προγραμματιστικό. Ο λόγος είναι απλός: Σε προβλήματα μεταθέσεων (permutations) και συνδυασμών (combinations) ΔΕΝ υπάρχει worst case scenario.&lt;br&gt;&lt;br&gt;Πάρε για παράδειγμα ένα string permutation πρόβλημα με 15 strings {s1, s2,..., s15}. Το πλήθος των permutations είναι 1307674368000. Αν θέλεις να κάνεις search για να βρεις τα permutations με γενικό σχήμα {*,s4,s12} είναι ΠΟΛΥ προτιμότερο να τα παράγεις από την αρχή. Στην ουσία αυτό που πρέπει να κάνεις είναι να ανάγεις το search σε permutation πρόβλημα δεκατριών strings και να προσθέσεις στο τέλος τα s4 και s12. Στο πρόβλημα των 13, το σύνολο των permutations είναι 6227020800 (το 0,48% του συνόλου του αρχικού προβλήματος των 15). Το search, λοιπόν, στο αρχικό σύνολο είναι ασύμφορο. Επιπλέον, είναι εντελώς παράλογο να κρατάς τόσα πολλά δεδομένα στη μνήμη. Και το παράδειγμα που ανέφερα είναι πολύ απλό. Σε πιο σύνθετες αναζητήσεις, η προσέγγιση πρέπει να είναι πιο εκλεπτυσμένη από ένα μετωπικό brute force, αλλιώς δεν θα τελειώσεις ποτέ!&lt;br&gt;&lt;br&gt;Τώρα, το προγραμματιστικό σου πρόβλημα ακούει στο όνομα RTB. Ό,τι χειρότερο. Άκουσε τον Παναγιώτη και ακολούθησε τη συμβουλή του και βάζε τα permutations σε λίστα. Διαφορετικά, καμία τεχνική threading δεν πρόκειται να σε σώσει. Αν θέλεις, για να καταλάβουμε κι εμείς καλύτερα τι θέλεις να κάνεις, δώσε μας ένα παράδειγμα με τα permutations που παράγεις και τις αναζητήσεις που κάνεις.&lt;br&gt;</description></item><item><title>Απ: Πρόβλημα με Async σε richTextBox</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/69432.aspx</link><pubDate>Fri, 24 Feb 2012 19:49:08 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:69432</guid><dc:creator>AlKiS</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/69432.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=72&amp;PostID=69432</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;nikos123:&lt;/strong&gt;&lt;/div&gt;&lt;div&gt; Εσένα κάνει αυτά που θες (και σχετικά γρήγορα) το πρόγραμμα;&lt;br&gt;&lt;p&gt;&lt;/div&gt;&lt;/BLOCKQUOTE&gt;&lt;/p&gt;&lt;p&gt;Ναι, πολύ πιο γρήγορα απότι πριν. Αλλά για Β&amp;gt;400 κολλάει πολύ και πάλι. Γιαυτό πρέπει να το κάνω σε Async.&lt;/p&gt;&lt;p&gt;
&lt;/p&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&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;nikos123:&lt;/strong&gt;&lt;/div&gt;&lt;div&gt; 
Όσο για το WorkSpaceFont μην το&amp;nbsp;δημιουργείς&amp;nbsp;και το&amp;nbsp;καταστρέφεις&amp;nbsp;σε κάθε κλήση της CororiseRTB .&lt;/div&gt;&lt;div&gt;Δήλωσε&amp;nbsp;το ως member στη&amp;nbsp;φόρμα,&amp;nbsp;αρχικοποιήσε&amp;nbsp;το μια&amp;nbsp;φορά&amp;nbsp;στο constructor (μετά το InitialiseComponent) και μην το κάνεις Dispose μέσα στην ColoriseRTB.
&lt;/div&gt;&lt;/BLOCKQUOTE&gt;
&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Εννοείς να το βάλω ByVal? Το έχω ήδη κάνει..&lt;/div&gt;&lt;div&gt;"Αρχικοποίησε το" τι εννοείς?&lt;/div&gt;&lt;div&gt;Δεν έχει πουθενά "&amp;nbsp; InitialiseComponent"... άρα τι κάνω?&lt;/div&gt;&lt;div&gt;Που να το κάνω dispose ???&lt;/div&gt;&lt;div&gt;let me pinpoint the fact that καλώ αυτή τη συνάρτηση και σε άλλες μεριές.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&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;nikos123:&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;
Επίσης προσπάθησε να μην καλείς με πολλές&amp;nbsp;παραμέτρους&amp;nbsp;τις συναρτήσεις (5 στην ColoriseRTB , 2 μόνο για το Font).

&lt;/div&gt;&lt;/BLOCKQUOTE&gt;
&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Όλες οι παράμετροι είναι valid. Δεν θα μπορούσα να την καλέσω με λιγότερες... αν μπορείς να μου την φτιάξεις αλλιώς, τότε πλζ, κάντο για να το δω.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;strong&gt;Note&lt;/strong&gt;: Στις άλλες μεριές που την καλώ, χρειάζεται να βάψω και το background color, όπως και το "bold" αλλάζει σε "underline". δλδ μπορεί στο rtbWorkSpace_TextChanged να τα βλέπεις όλα ίδια, αλλά δεν είναι στις επόμενες.&lt;/div&gt;&lt;div&gt;Γιαυτό δεν πιστεύω ότι μπορεί να γίνει με λιγότερες παραμέτρους.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&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;nikos123:&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;

To async απ' όσο ξέρω δεν κάνει κάτι αφού δεν έχεις await.


&lt;/div&gt;&lt;/BLOCKQUOTE&gt;
&lt;/div&gt;&lt;div&gt;Σωστό είναι αυτό που λες. Αλλά αφού στο τέλος θα την κάνουμε async, δεν έχει νοήμα να το βγάλω τώρα για να το ξαναβάλω μετά.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&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;nikos123:&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;


Ο έλεγχος matches.Count &amp;gt;0 δεν χρειάζεται


&lt;/div&gt;&lt;/BLOCKQUOTE&gt;
&lt;br&gt;&lt;div&gt;Αχά, έχει απο μόνο του έλεγχο? Καλό :)&lt;br&gt;&lt;/div&gt;&lt;div&gt;Το έβγαλα λοιπών.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Φίλε μου Νίκο σε ευχαριστώ πολύ για την βοήθειά σου.&lt;/div&gt;&lt;div&gt;Όταν έχεις χρόνο, σκέψου πως μπορούμε να το κάνουμε και async... είναι πολύ σημαντικό αυτό.&lt;/div&gt;&lt;/div&gt;</description></item><item><title>Απ: Πρόβλημα με Async σε richTextBox</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/69431.aspx</link><pubDate>Fri, 24 Feb 2012 18:19:17 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:69431</guid><dc:creator>nikos123</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/69431.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=72&amp;PostID=69431</wfw:commentRss><description>Εσένα κάνει αυτά που θες (και σχετικά γρήγορα) το πρόγραμμα;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Όσο για το WorkSpaceFont μην το&amp;nbsp;δημιουργείς&amp;nbsp;και το&amp;nbsp;καταστρέφεις&amp;nbsp;σε κάθε κλήση της CororiseRTB .&lt;/div&gt;&lt;div&gt;Δήλωσε&amp;nbsp;το ως member στη&amp;nbsp;φόρμα,&amp;nbsp;αρχικοποιήσε&amp;nbsp;το μια&amp;nbsp;φορά&amp;nbsp;στο constructor (μετά το InitialiseComponent) και μην το κάνεις Dispose μέσα στην ColoriseRTB.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Επίσης προσπάθησε να μην καλείς με πολλές&amp;nbsp;παραμέτρους&amp;nbsp;τις συναρτήσεις (5 στην ColoriseRTB , 2 μόνο για το Font).&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;To async απ' όσο ξέρω δεν κάνει κάτι αφού δεν έχεις await.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Ο έλεγχος matches.Count &amp;gt;0 δεν χρειάζεται&lt;br&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;/div&gt;</description></item><item><title>Απ: Πρόβλημα με Async σε richTextBox</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/69428.aspx</link><pubDate>Fri, 24 Feb 2012 07:35:55 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:69428</guid><dc:creator>AlKiS</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/69428.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=72&amp;PostID=69428</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;nikos123:&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;To&amp;nbsp;&lt;span style="font-family:Tahoma, Arial, Helvetica;font-size:13px;text-align:left;"&gt;MatchCollection αποτελείται από&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:Tahoma, Arial, Helvetica;font-size:13px;text-align:left;"&gt;Match αντικείμενα. Αν η λέξη που ψάχνεις βρίσκεται σε 5 φορές μέσα στο κείμενο, το&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:Tahoma, Arial, Helvetica;font-size:13px;text-align:left;"&gt;MatchCollection θα περιέχει 5&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:Tahoma, Arial, Helvetica;font-size:13px;text-align:left;"&gt;Match.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:Tahoma, Arial, Helvetica;font-size:13px;text-align:left;"&gt;Το&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:Tahoma, Arial, Helvetica;font-size:13px;text-align:left;"&gt;Match έχει ένα property Index με την θέση της λέξης.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:Tahoma, Arial, Helvetica;font-size:13px;text-align:left;"&gt;&lt;br&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="text-align:left;"&gt;&lt;font face="Tahoma, Arial, Helvetica" size="2"&gt;Π.χ. 5 &lt;/font&gt;&lt;font face="Tahoma, Arial, Helvetica"&gt;φορές&lt;/font&gt;&lt;font face="Tahoma, Arial, Helvetica" size="2"&gt;&amp;nbsp;το "ABC"&lt;/font&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="text-align:left;"&gt;&lt;pre&gt;&lt;span style="background-color:transparent;"&gt;&lt;font face="'Courier New'"&gt;&lt;span style="font-size:11px;"&gt;           MatchCollection matches &lt;/span&gt;&lt;/font&gt;&lt;span style="color:red;background-color:transparent;font-family:'Courier New';font-size:11px;font-weight:normal;"&gt;=&lt;/span&gt;&lt;font face="'Courier New'"&gt;&lt;span style="font-size:11px;"&gt; Regex.Matches(&lt;/span&gt;&lt;/font&gt;&lt;span style="font-family:'Courier New';font-size:11px;font-weight:normal;"&gt;"&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:'Courier New';font-size:11px;"&gt;asdaABCdsadaABCertyuuiaABChjghjABChgjhgjhjABCsdfsdfs&lt;/span&gt;&lt;span style="background-color:transparent;"&gt;&lt;span style="font-family:'Courier New';font-size:11px;font-weight:normal;"&gt;"&lt;/span&gt;&lt;font face="'Courier New'"&gt;&lt;span style="font-size:11px;"&gt;, &lt;/span&gt;&lt;/font&gt;&lt;span style="font-family:'Courier New';font-size:11px;font-weight:normal;"&gt;"ABC"&lt;/span&gt;&lt;font face="'Courier New'"&gt;&lt;span style="font-size:11px;"&gt;);
            &lt;/span&gt;&lt;/font&gt;&lt;span style="color:blue;background-color:transparent;font-family:'Courier New';font-size:11px;font-weight:normal;"&gt;foreach&lt;/span&gt;&lt;font face="'Courier New'"&gt;&lt;span style="font-size:11px;"&gt;(Match item &lt;/span&gt;&lt;/font&gt;&lt;span style="color:blue;background-color:transparent;font-family:'Courier New';font-size:11px;font-weight:normal;"&gt;in&lt;/span&gt;&lt;font face="'Courier New'"&gt;&lt;span style="font-size:11px;"&gt; matches)
            {
                rtb.SelectionStart &lt;/span&gt;&lt;/font&gt;&lt;span style="color:red;background-color:transparent;font-family:'Courier New';font-size:11px;font-weight:normal;"&gt;=&lt;/span&gt;&lt;font face="'Courier New'"&gt;&lt;span style="font-size:11px;"&gt; item.Index; 
                rtb.SelectionLength = item.Length;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="background-color:transparent;font-size:11px;"&gt;&lt;font face="'Courier New'"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="background-color:transparent;font-size:11px;"&gt;&lt;font face="'Courier New'"&gt;                rtb.SelectionFont = boldFont;&lt;/font&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="background-color:transparent;"&gt;&lt;font face="'Courier New'"&gt;&lt;span style="font-size:11px;"&gt;            }&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/pre&gt;Τα Font πρέπει να γίνονται Dispose() για να διαγραφούν.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;Φτιάξε ένα Font member και να&amp;nbsp;χρησιμοποιείς&amp;nbsp;πάντα αυτό χωρίς να δημιουργείς νέα.&amp;nbsp;
&lt;/div&gt;&lt;pre&gt;&lt;span style="color:Black;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;        Font boldFont;
        &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;public&lt;/span&gt; Form1()
        {
            InitializeComponent();
            boldFont &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; Font(rtb.Font, FontStyle.Bold);
        }&lt;/span&gt;&lt;/div&gt;&lt;/BLOCKQUOTE&gt;
&lt;span style="color:Black;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;&lt;br&gt;&lt;/span&gt;
&lt;br&gt;Ok, ακολούθησα τα guidelines και έγραψα αυτό:
&lt;span style="color:Black;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;&lt;br&gt;&lt;br&gt;&lt;/span&gt;&lt;table border="0" cellpadding="0" cellspacing="0" width="100%" style="background-color:#f2f2f2;border:solid 1px #e5e5e5;"&gt;&lt;tr style="vertical-align:top;line-height:normal;"&gt;&lt;td style="width:40px;text-align:right;"&gt;&lt;pre style="font-family:courier new;font-size:11px;color:gray;margin:0px;padding:2px;border-right:solid 1px #e7e7e7;"&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
39
40
41
42
43
44
45
46
47
48
 &lt;/pre&gt;&lt;/td&gt;&lt;td&gt;&lt;pre style="margin:0px;padding:2px;padding-left: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;Sub&lt;/span&gt; ColouriseRTB(&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;ByVal&lt;/span&gt; rtb &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;As&lt;/span&gt; RichTextBox, &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;ByVal&lt;/span&gt; ColourizeableText &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;As&lt;/span&gt; &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;String&lt;/span&gt;, &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;ByVal&lt;/span&gt; rtbFontStyle &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;As&lt;/span&gt; FontStyle, &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;ByVal&lt;/span&gt; rtbColour &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;As&lt;/span&gt; Color, &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;ByVal&lt;/span&gt; rtbBackColour &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;As&lt;/span&gt; Color, &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Optional&lt;/span&gt; &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;ByVal&lt;/span&gt; iLengthDeviation &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;As&lt;/span&gt; &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Integer&lt;/span&gt; &lt;span style="color:Red;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;=&lt;/span&gt; 0)
        &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Dim&lt;/span&gt; rtbMatches &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;As&lt;/span&gt; MatchCollection
        &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Dim&lt;/span&gt; rtbText &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;As&lt;/span&gt; &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;String&lt;/span&gt; &lt;span style="color:Red;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;=&lt;/span&gt; rtb.Text
        &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Dim&lt;/span&gt; WorkSpacefont &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;As&lt;/span&gt; Font &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; Font(rtb.Font, rtbFontStyle)

        rtbMatches &lt;span style="color:Red;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;=&lt;/span&gt; Regex.Matches(rtbText, ColourizeableText, RegexOptions.None)
        &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;If&lt;/span&gt; rtbMatches.&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Count&lt;/span&gt; &amp;gt; 0 &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Then&lt;/span&gt;
            &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;For&lt;/span&gt; &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Each&lt;/span&gt; &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;item&lt;/span&gt; &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;As&lt;/span&gt; Match &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;In&lt;/span&gt; rtbMatches
                rtb.SelectionStart &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;item&lt;/span&gt;.Index
                rtb.SelectionLength &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;item&lt;/span&gt;.Length &lt;span style="color:Red;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;+&lt;/span&gt; iLengthDeviation
                rtb.SelectionFont &lt;span style="color:Red;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;=&lt;/span&gt; WorkSpacefont
                rtb.SelectionColor &lt;span style="color:Red;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;=&lt;/span&gt; rtbColour
                rtb.SelectionBackColor &lt;span style="color:Red;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;=&lt;/span&gt; rtbBackColour
            &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Next&lt;/span&gt;
        &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;End&lt;/span&gt; &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;If&lt;/span&gt;
        WorkSpacefont.Dispose()

    &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;End&lt;/span&gt; &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Sub&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; Async &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Sub&lt;/span&gt; rtbWorkSpace_TextChanged(sender &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;As&lt;/span&gt; System.&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Object&lt;/span&gt;, e &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;As&lt;/span&gt; System.EventArgs) &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Handles&lt;/span&gt; rtbWorkgroup.TextChanged
        &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;If&lt;/span&gt; rtbWorkgroup.Text &amp;lt;&amp;gt; &lt;span style="color:#666666;background-color:#e4e4e4;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;Then&lt;/span&gt;
            mniExportImWindow.Enabled &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;
            mniExportEverything.Enabled &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;If&lt;/span&gt; DatasetLength &lt;span style="color:Red;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;=&lt;/span&gt; 2 &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Then&lt;/span&gt;
                &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Call&lt;/span&gt; Controls2DBStatusNormal()
            &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Else&lt;/span&gt;
                &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Call&lt;/span&gt; ControlsManyDBStatusNormal()
            &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;End&lt;/span&gt; &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;If&lt;/span&gt;

            &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;If&lt;/span&gt; showOutputColoured &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;Then&lt;/span&gt;
                &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;If&lt;/span&gt; (CombinationsCount &lt;span style="color:Red;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;*&lt;/span&gt; T_Repetition &lt;span style="color:Red;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;*&lt;/span&gt; n_NumberOfErrors) &amp;lt; (3 &lt;span style="color:Red;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;*&lt;/span&gt; 200 &lt;span style="color:Red;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;*&lt;/span&gt; 100) &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Then&lt;/span&gt; &lt;span style="color:Green;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;'So as not to crush UI&lt;/span&gt;
                    ColouriseRTB(rtbWorkgroup, (txtLanguage.Lines(71)), FontStyle.Bold, WorkSpaceMainVariablesColours, DefaultBackColor) &lt;span style="color:Green;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;'Permutation&lt;/span&gt;
                &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;End&lt;/span&gt; &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;If&lt;/span&gt;

                ColouriseRTB(rtbWorkgroup, txtLanguage.Lines(66), FontStyle.Bold, WorkSpaceMainVariablesColours, DefaultBackColor) &lt;span style="color:Green;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;'Permutations&lt;/span&gt;

                ColouriseRTB(rtbWorkgroup, txtLanguage.Lines(67), FontStyle.Bold, WorkSpaceMainVariablesColours, DefaultBackColor) &lt;span style="color:Green;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;'Max Vertical Deviation&lt;/span&gt;

                ColouriseRTB(rtbWorkgroup, txtLanguage.Lines(58), FontStyle.Bold, WorkSpaceMainVariablesColours, DefaultBackColor) &lt;span style="color:Green;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;'KS p-value REC&lt;/span&gt;

            &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;End&lt;/span&gt; &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;If&lt;/span&gt;

        &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Else&lt;/span&gt;
            &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Call&lt;/span&gt; ControlsStatusDisableAll()

        &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;End&lt;/span&gt; &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;If&lt;/span&gt;
    &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;End&lt;/span&gt; &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Sub&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br&gt;Είναι εντάξει τώρα?&lt;br&gt;&lt;/pre&gt;</description></item><item><title>Απ: Πρόβλημα με Async σε richTextBox</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/69425.aspx</link><pubDate>Fri, 24 Feb 2012 03:01:47 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:69425</guid><dc:creator>Markos</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/69425.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=72&amp;PostID=69425</wfw:commentRss><description>Αν γνωρίζεις ακριβώς ποιo(-α) είναι to permutation που ζητάς, δε χρειάζεται να παράγεις όλο το σύνολο των permutations για να το βρεις. Ρίξε μια μιατιά στο άρθρο &lt;a href="http://msdn.microsoft.com/en-us/magazine/cc163513.aspx"&gt;String Permutations&lt;/a&gt; (έχει και κώδικα που μπορείς να κάνεις download). Πιθανόν οι τεχνικές που αναφέρονται εκεί σε βοηθήσουν να βελτιστοποιήσεις τον κώδικά σου. Επίσης βρήκα και αυτό το link (&lt;a href="http://textmechanic.com/"&gt;TextMechanic&lt;/a&gt;). Είναι λίγο off topic, αλλά μπορεί να σου δώσει ιδέες για προσθέσεις λειτουργικότητα στην εφαρμογή σου.&lt;br&gt;&lt;br&gt;[Προσθήκη]&lt;br&gt;&lt;br&gt;Μπορεί να φανεί αιρετικό αυτό που θα πω, αλλά διαβάζοντας το άρθρο μου δημιουργήθηκε η εντύπωση ότι με κάθε νέο search ίσως είναι πιο γρήγορο να "ξαναπαράγεις" τα permutations και να "χρωματίζεις" εκείνα που σ' ενδιαφέρουν καθώς κάνεις append το string, παρά να ψάχνεις ξανά και ξανά ένα πιθανώς χαοτικό σε μέγεθος string. Οι υπόλοιποι, τι λέτε επ' αυτού;&lt;br&gt;</description></item><item><title>Απ: Πρόβλημα με Async σε richTextBox</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/69424.aspx</link><pubDate>Fri, 24 Feb 2012 02:17:56 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:69424</guid><dc:creator>AlKiS</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/69424.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=72&amp;PostID=69424</wfw:commentRss><description>&lt;p&gt;Ευχαριστώ πολύ,&lt;/p&gt;&lt;p&gt;όταν βρω το χρόνο να συνεχίσω το πρόγραμμα θα το δοκιμάσω αμέσως και θα απαντήσω σε αυτό το thread.&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;thanks :)&lt;/p&gt;</description></item><item><title>Απ: Πρόβλημα με Async σε richTextBox</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/69423.aspx</link><pubDate>Fri, 24 Feb 2012 02:09:00 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:69423</guid><dc:creator>nikos123</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/69423.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=72&amp;PostID=69423</wfw:commentRss><description>&lt;div&gt;To&amp;nbsp;&lt;span style="font-family:Tahoma, Arial, Helvetica;font-size:13px;text-align:left;"&gt;MatchCollection αποτελείται από&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:Tahoma, Arial, Helvetica;font-size:13px;text-align:left;"&gt;Match αντικείμενα. Αν η λέξη που ψάχνεις βρίσκεται σε 5 φορές μέσα στο κείμενο, το&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:Tahoma, Arial, Helvetica;font-size:13px;text-align:left;"&gt;MatchCollection θα περιέχει 5&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:Tahoma, Arial, Helvetica;font-size:13px;text-align:left;"&gt;Match.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:Tahoma, Arial, Helvetica;font-size:13px;text-align:left;"&gt;Το&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:Tahoma, Arial, Helvetica;font-size:13px;text-align:left;"&gt;Match έχει ένα property Index με την θέση της λέξης.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:Tahoma, Arial, Helvetica;font-size:13px;text-align:left;"&gt;&lt;br&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:Tahoma, Arial, Helvetica;font-size:13px;text-align:left;"&gt;&lt;br&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="text-align:left;"&gt;&lt;font face="Tahoma, Arial, Helvetica" size="2"&gt;Π.χ. 5&amp;nbsp;&lt;/font&gt;&lt;font face="Tahoma, Arial, Helvetica"&gt;φορές&lt;/font&gt;&lt;font face="Tahoma, Arial, Helvetica" size="2"&gt;&amp;nbsp;το "ABC"&lt;/font&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="text-align:left;"&gt;&lt;pre&gt;&lt;span style="background-color:transparent;"&gt;&lt;font face="'Courier New'"&gt;&lt;span style="font-size:11px;"&gt;           MatchCollection matches &lt;/span&gt;&lt;/font&gt;&lt;span style="color:red;background-color:transparent;font-family:'Courier New';font-size:11px;font-weight:normal;"&gt;=&lt;/span&gt;&lt;font face="'Courier New'"&gt;&lt;span style="font-size:11px;"&gt; Regex.Matches(&lt;/span&gt;&lt;/font&gt;&lt;span style="font-family:'Courier New';font-size:11px;font-weight:normal;"&gt;"&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:'Courier New';font-size:11px;"&gt;asdaABCdsadaABCertyuuiaABChjghjABChgjhgjhjABCsdfsdfs&lt;/span&gt;&lt;span style="background-color:transparent;"&gt;&lt;span style="font-family:'Courier New';font-size:11px;font-weight:normal;"&gt;"&lt;/span&gt;&lt;font face="'Courier New'"&gt;&lt;span style="font-size:11px;"&gt;, &lt;/span&gt;&lt;/font&gt;&lt;span style="font-family:'Courier New';font-size:11px;font-weight:normal;"&gt;"ABC"&lt;/span&gt;&lt;font face="'Courier New'"&gt;&lt;span style="font-size:11px;"&gt;);
            &lt;/span&gt;&lt;/font&gt;&lt;span style="color:blue;background-color:transparent;font-family:'Courier New';font-size:11px;font-weight:normal;"&gt;foreach&lt;/span&gt;&lt;font face="'Courier New'"&gt;&lt;span style="font-size:11px;"&gt;(Match item &lt;/span&gt;&lt;/font&gt;&lt;span style="color:blue;background-color:transparent;font-family:'Courier New';font-size:11px;font-weight:normal;"&gt;in&lt;/span&gt;&lt;font face="'Courier New'"&gt;&lt;span style="font-size:11px;"&gt; matches)
            {
                rtb.SelectionStart &lt;/span&gt;&lt;/font&gt;&lt;span style="color:red;background-color:transparent;font-family:'Courier New';font-size:11px;font-weight:normal;"&gt;=&lt;/span&gt;&lt;font face="'Courier New'"&gt;&lt;span style="font-size:11px;"&gt; item.Index; 
                rtb.SelectionLength = item.Length;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="background-color:transparent;font-size:11px;"&gt;&lt;font face="'Courier New'"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="background-color:transparent;font-size:11px;"&gt;&lt;font face="'Courier New'"&gt;                rtb.SelectionFont = boldFont;&lt;/font&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="background-color:transparent;"&gt;&lt;font face="'Courier New'"&gt;&lt;span style="font-size:11px;"&gt;            }&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/pre&gt;Τα Font πρέπει να γίνονται Dispose() για να διαγραφούν.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;Φτιάξε ένα Font member και να&amp;nbsp;χρησιμοποιείς&amp;nbsp;πάντα αυτό χωρίς να δημιουργείς νέα.&amp;nbsp;
&lt;/div&gt;&lt;pre&gt;&lt;span style="color:Black;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;        Font boldFont;
        &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;public&lt;/span&gt; Form1()
        {
            InitializeComponent();
            boldFont &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; Font(rtb.Font, FontStyle.Bold);
        }&lt;/span&gt;&lt;/pre&gt;&lt;br&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;div&gt;&lt;span style="font-family:Tahoma, Arial, Helvetica;font-size:13px;text-align:left;"&gt;&lt;br&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;</description></item><item><title>Απ: Πρόβλημα με Async σε richTextBox</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/69421.aspx</link><pubDate>Fri, 24 Feb 2012 00:58:14 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:69421</guid><dc:creator>AlKiS</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/69421.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=72&amp;PostID=69421</wfw:commentRss><description>&lt;p&gt;Οι πράξεις γίνονται σε μεταβλητές Double()().&lt;/p&gt;&lt;p&gt;800 γραμμές είναι του dataset. Το κείμενο αυτό δείχνει όλα τα permutations που έγιναν, τα οποία είναι 800 (γραμμές) * (Β φορές το οποίο διαλέγει ο χρήστης) * Το διωνυμικό συντελεστή των στηλών ανά 2, άρα πες *16 = 12787200 σειρές ΜΟΝΟ τα permutations.&lt;/p&gt;&lt;p&gt;(και αυτό ΔΕΝ είναι ούτε καν κοντά στο worst case scenario)&lt;/p&gt;&lt;p&gt;Αν σκεφτείς και τα υπόλοιπα δεδομένα που περιέχει (Maximum Vertical Deviation, ks p-value, texts..) τότε χαθήκαμε.&lt;/p&gt;&lt;p&gt;Αλλά ξεφύγαμε απο το point όμως.&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;Crap, δεν ξέρω το List(of T)&lt;/p&gt;&lt;p&gt;anyway, θα το κοιτάξω τώρα.&lt;/p&gt;&lt;p&gt;Αν θες απάντησέ μου στις ερωτήσεις που έκανα πάνω στο προηγούμενο πόστ σου, και ειδικά αυτή για το "Regex.Matches"&lt;/p&gt;&lt;p&gt;Aν μπορείς να μου γράψεις και ένα μικρό παραδειγματάκι χρησιμοποιώντας αυτό για να το καταλάβω καλύτερα θα ήταν τέλεια.&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;Ευχαριστώ για τη βοήθεια&lt;/p&gt;</description></item><item><title>Απ: Πρόβλημα με Async σε richTextBox</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/69419.aspx</link><pubDate>Fri, 24 Feb 2012 00:31:42 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:69419</guid><dc:creator>Παναγιώτης Καναβός</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/69419.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=72&amp;PostID=69419</wfw:commentRss><description>Permutations??? Αν θέλεις να κάνεις υπολογισμούς, η χρήση του κειμένου ενός textbox είναι ο χειρότερος δυνατός τρόπος. Αν θέλεις να "σκαλίσεις" τα δεδομένα από κάποιο κείμενο, φόρτωσε τα, διάβασε τα γραμμή-γραμμή και γέμισε ένα πίνακα ή μία λίστα (εννοώ το κλασσικό &lt;a href="http://msdn.microsoft.com/en-us/library/6sh2ey19.aspx"&gt;List&lt;/a&gt;, ή όποιο άλλο collection σε βολεύει) και μετά κάνε τους υπολογισμούς που θέλεις.&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;800 γραμμές είναι μηδαμινές ως όγκος δεδομένων, όσο μακρυές και αν είναι. Όσο για τα Β και τις στήλες ... δεν καταλαβαίνω καν τί εννοείς. Ίσως να είναι κάτι που έχεις συζητήσει σε άλλο, άσχετο post.&lt;br&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;/div&gt;</description></item></channel></rss>