.NET Framework Class Library (FCL) .NET 1.0 - PowerPoint PPT Presentation

1 / 60
About This Presentation
Title:

.NET Framework Class Library (FCL) .NET 1.0

Description:

.NET Framework Class Library (FCL) .NET 1.0 Krizs n Zolt n 1.0 F bb tulajdons gok Objektum orient lt API. Egys ges fejleszt i k nyt r. T bb, mint 7000 ... – PowerPoint PPT presentation

Number of Views:91
Avg rating:3.0/5.0
Slides: 61
Provided by: k9519141
Category:
Tags: fcl | net | class | framework | library

less

Transcript and Presenter's Notes

Title: .NET Framework Class Library (FCL) .NET 1.0


1
.NET Framework Class Library(FCL) .NET 1.0
  • Krizsán Zoltán
  • 1.0

2
Fobb tulajdonságok
  • Objektum orientált API.
  • Egységes fejlesztoi könytár.
  • Több, mint 7000 típus(osztály, struktúra,
    interfész, felsorolt, delegátum).
  • Hierarchikusan szervezett névterek (kb. 100).
  • C - using, VB imports.

3
Esemény vezérelt
  • A program vár, hogy egy esemény bekövetkezzen,
    amit lekezel.
  • Firing an event eseményt generál az objektum
  • Listener objektum, ami vár az eseményre
  • Event handler módszer, amely lekezeli az
    eseményt

4
Kategóriák
  • 100 névtér
  • I/O (file, stream)
  • Collection (hash táblák, din. tömbök)
  • Reguláris kifejezések
  • Internet
  • Adatbázis
  • Reflekció
  • Diagnosztika
  • Szálkezelés

5
IO - Fobb jellemzok
  • System.IO 30 osztály, 1 struktúra, 3 delegátum,
    7 enum
  • BinaryReader, BinaryWriter, Directory, File,
    FileInfo, FileStream, IOException, MemoryStream,
    Path, Stream, StreamWriter, StreamReader,
    TextReader, TextWriter

6
File rendszer fv.-ek
  • FileSystemInfo (absztrakt), csak példány fv.-ek
  • DirectoryInfo
  • FileInfo
  • Directory (statikus fv.-ek)
  • File (statikus fv.-ek)
  • PathSztringeken manipulál, amelyek fájlra, vagy
    jegyzékre irányulnak. Nem kell hogy létezzen a
    cél.

7
Példa File rendszer
  • DirectoryInfo dir   new DirectoryInfo(Directory.G
    etCurrentDirectory())         
  • Console.WriteLine( "Current Dir 0", dir.FullNam
    e)         
  • foreach (FileInfo f in dir.GetFiles())   
  • Console.WriteLine("0,-141,102,20",
     f.Name, f.Length, f.LastWriteTime)
  • Process p  Process.GetCurrentProcess()
                
  • ProcessModule pm  p.MainModule             
  • string s  pm.ModuleName             
  • Console.WriteLine( Path.GetFullPath(s) )
                
  • Console.WriteLine( Path.GetFileName(s) )
                
  • Console.WriteLine( Path.GetFileNameWithoutExtensio
    n(s))        
  • Console.WriteLine(Path.GetDirectoryName(Directory.
    GetCurrentDirectory()))   
  • Console.WriteLine(Path.GetPathRoot(Directory.GetCu
    rrentDirectory()))
  • Console.WriteLine( Path.GetTempPath() )
                
  • Console.WriteLine( Path.GetTempFileName() )

8
IO - Tipikus jegyzokönyv
  • Nyissuk meg a folyamot a FileStream osztály
    segítségével.

Bináris BinaryReader, BinaryWriter osztályok
valamelyike Read, Write fv.
Szöveges StreamReader, StreamWriter osztályok
valamelyike ReadLine, WriteLine fv.
  • Zárjuk le a folyamot

9
IO - Példa
  • static void Main(string args)
  • StreamReader reader null
  • try
  • reader new StreamReader(args0)
  • for(string line reader.ReadLine() line !
    null
  • line reader.ReadLine())
  • Console.WriteLine(line)
  • catch(IOException e)Console.WriteLine(e.Message)
  • finally if (reader ! null) reader.Close()

10
Sorosítás
  • IRemotingFormatter-t implementáló osztályok
    (RPC)
  • SoapFormatter
  • BinaryFormatter
  • Lementés - Serialize
  • Feltöltés Deserialize
  • Attribútumok
  • Serializable()
  • NonSerialized()

11
Példa - sorosítás
  • using System.Runtime.Serialization
  • using System.Runtime.Serialization.Formatters.Soap
  • using System.Runtime.Serialization.Formatters.Bina
    ry
  • public class Test
  • public static void Main()
  • TestSimpleObject obj new
    TestSimpleObject()
  • Console.WriteLine("Before serialization
    ") obj.Print()
  • Stream stream File.Open("data.xml",
    FileMode.Create)
  • SoapFormatter formatter new
    SoapFormatter()
  • BinaryFormatter formatter new
    BinaryFormatter()
  • formatter.Serialize(stream, obj)
    stream.Close()
  • obj null
  • stream File.Open("data.xml",
    FileMode.Open)
  • formatter new SoapFormatter()
    formatter new BinaryFormatter()
  • obj (TestSimpleObject)formatter.Deserializ
    e(stream)
  • stream.Close()
  • Console.WriteLine("After deserialization
    ") obj.Print()

12
Példa sorosítás II
  • Serializable()
  • public class TestSimpleObject
  • public int member1 public string member2
    public double member3
  • NonSerialized() public string member4
  • public TestSimpleObject()
  • member1 11
  • member2 "hello"
  • member3 3.14159265
  • member4 "hello world!"
  • public void Print()
  • Console.WriteLine("member1 '0'",
    member1)
  • Console.WriteLine("member2 '0'",
    member2)
  • Console.WriteLine("member3 '0'",
    member3)
  • Console.WriteLine("member4 '0'",
    member4)

13
Kategóriák
  • 100 névtér
  • I/O (file, stream)
  • Collection (hash táblák, din. tömbök)
  • Reguláris kifejezések
  • Internet
  • Adatbázis
  • Reflekció
  • Diagnosztika
  • Szálkezelés

14
Collection - Fobb jellemzok
  • Bármilyen típus eltárolható benne (System.Object)
  • Fobb osztályai ArrayList, Hashtable, Stack, és
    Queue
  • C-ban template-ek (STL)
  • .NET 2.0-tól - Generics

15
Collection - Hash tábla
  • Párokban tárolja az adatokat kulcs érték
  • Gyors keresés, egyedi kulcsok
  • Beillesztés Add fv., operátor
  • Bejárásforeach(DictionaryEntry entry in table)
  • Console.WriteLine("Kulcs0 Érték1",
    entry.Key, entry.Value)
  • Törlés Remove, Clear fv.-ek

16
Collection - Tömb
  • Array osztály, statikus primitív típusokra
  • 6 tulajdonság IsFixedSize, IsReadOnly,
    IsSynchronized, Lenght, Rank, SyncRoot
  • 22 fv.
  • Implementál több interfészt is.Pl.az IList-et
    add, clear, insert, remove, ...

17
Collection - példa
  • public class SamplesArrayList
  • public static void Main()
  • ArrayList myAL new ArrayList()
  • myAL.Add("Hello") myAL.Add("World")
    myAL.Add("!")
  • Console.WriteLine( "myAL" )
  • Console.WriteLine( "\tCount 0",
    myAL.Count )
  • Console.WriteLine( "\tCapacity 0",
    myAL.Capacity )
  • Console.Write( "\tValues" )
    PrintValues( myAL )
  • public static void PrintValues( IEnumerable
    myList )
  • System.Collections.IEnumerator myEnumerator
    myList.GetEnumerator()
  • while ( myEnumerator.MoveNext() )
  • Console.WriteLine( "\t0", myEnumerator.Curren
    t )

18
Kategóriák
  • 100 névtér
  • I/O (file, stream)
  • Collection (hash táblák, din. tömbök)
  • Reguláris kifejezések
  • Internet
  • Adatbázis
  • Reflekció
  • Diagnosztika
  • Szálkezelés

19
Reguláris kif. - Fobb jellemzok
  • PERL 5.0 kompatibilis! (.NET 1.0)
  • System.Text.RegularExpression névtér8 osztály, 1
    delegátum,1 felsorolt típus
  • RegEx osztály
  • Használata
  • HTML elemzése
  • sztringeket részsztringekre bontása
  • egyezo minták keresése
  • részsztring keresés/csere

20
Reguláris kif. - példa
  • Regex r new Regex("(-)")
  • string s r.Split("one-two-banana")
  • Html elemzéshez használjuk a
  • RegEx regex new RegEx(ltgtgt)

21
Reguláris kif. példa
  • class RegExSample
  • static string CapText(Match m)
  • string x m.ToString()
  • if (char.IsLower(x0))
  • return char.ToUpper(x0) x.Substring(1,
    x.Length-1)
  • return x
  • static void Main()
  • string text "four score and seven years
    ago"
  • System.Console.WriteLine("text" text
    "")
  • string result Regex.Replace(text, _at_"\w",
  • new MatchEvaluator(RegExSample.CapText))
  • System.Console.WriteLine("result"
    result "")

22
Kategóriák
  • 100 névtér
  • I/O (file, stream)
  • Collection (hash táblák, din. tömbök)
  • Reguláris kifejezések
  • Internet
  • Adatbázis
  • Reflekció
  • Diagnosztika
  • Szálkezelés

23
Internet - Fobb jellemzok
  • System.Net névtér36 osztály, 5 interfész, 1
    delegátum,4 felsorolt típus
  • Fontosabb osztályokCookie, WebClient,
    WebException, WebProxy, SocketAddress,
  • Minden elterjedt protokollt támogat.
  • WebRequest és WebResponse az alap.

24
Internet - példa - WebClient
  • public class Test
  • public static void Main (string args)
  • if (args null args.Length 0)
  • throw new ApplicationException
    ("Specify the URI of the resource to retrieve.")
  • WebClient client new WebClient ()
  • client.Headers.Add ("user-agent",
    "Mozilla/4.0 (compatible MSIE 6.0 Windows NT
    5.2 .NET CLR 1.0.3705)")
  • Stream data client.OpenRead (args0)
  • StreamReader reader new StreamReader
    (data)
  • string s reader.ReadToEnd ()
  • Console.WriteLine (s)
  • data.Close ()
  • reader.Close ()

25
System.Net.Sockets.TcpClient
  • static void Connect(String server, String
    message)
  • try
  • Int32 port 13000
  • TcpClient client new TcpClient(server,
    port)
  • Byte data System.Text.Encoding.ASCII.GetBy
    tes(message)
  • NetworkStream stream client.GetStream()
  • stream.Write(data, 0, data.Length)
  • Console.WriteLine("Sent 0", message)
  • data new Byte256
    String responseData String.Empty
  • Int32 bytes stream.Read(data, 0,
    data.Length)
  • responseData System.Text.Encoding.ASCII.GetS
    tring(data, 0, bytes)
  • Console.WriteLine("Received 0",
    responseData)
  • client.Close()
  • catch (ArgumentNullException e)
    Console.WriteLine("ArgumentNullException 0",
    e)
  • catch (SocketException e) Console.WriteLine("S
    ocketException 0", e)

26
WebRequest - WebResponse
  • // Initialize the WebRequest.
  • WebRequest myRequest WebRequest.Create("http//w
    ww.contoso.com")
  • // Return the response.
  • WebResponse myResponse myRequest.GetResponse()
  • // Code to use the WebResponse goes here.
  • // Close the response to free resources.
  • myResponse.Close()

27
System.Web
  • ASP.NET Web alkalmazásokhoz, XML Web
    szervizekhez
  • System.Web osztályok, interfészek
    böngészo/server kommunikációhoz. HTTP kimenetet
    produkál (HttpResponse), olvassa HTTP kérést
    (HttpRequest), . osztályok, amelyek kezelik,
    használják a cookie-kat, fájl átvitelt,
    kivételeket, ...
  • System.Web.UI Web Form oldalakat készíthetünk,
    (Page)
  • System.Web.UI.HtmlControls HTML specifikus
    kontrollok Web formokhoz.
  • System.Web.UI.WebControls ASP.NET Web szerver
    kontrollok.
  • System.Web.Services - XML Web szervizekhez.

28
Levelezés - asp
  • MailMessage mess new MailMessage()
  • mess.From valaki_at_valahonnan.com
  • mess.To
  • mess.Subject
  • mess.Body
  • MailAttachment MyAttachment new
    MailAttachment(sSubstr)
  • mess.Attachments.Add(MyAttachment)
  • SmtpMail.SmtpServer localhost
  • SmtpMail.Send()

29
Kategóriák
  • 100 névtér
  • I/O (file, stream)
  • Collection (hash táblák, din. tömbök)
  • Reguláris kifejezések
  • Internet
  • Adatbázis
  • Reflekció
  • Diagnosztika
  • Szálkezelés

30
Adatdbázis - Fobb jellemzok
  • System.Data névtér
  • Támogatott forrásokODBC, ADO, DAO, RDO, OLEDB
  • Fobb osztályokConnection, DataReader, DataSet,
    DataAdapter, SqlException

31
Adat lekérdezésSqlDataReader
  • System.Data.SqlClient névtér
  • Létrehozzuk, használjuk az objektumot, majd
    lezárjuk a Close fv.-el.
  • Eredmények lekérdezése
  • GetBoolean, GetChar, GetDouble, ...
  • Melyek paramétere az oszlop sorszáma (0 indexu)
  • InvalidCastException, ha nem konvertálható
    implicit.
  • Elotte hívjuk meg a IsDBNull fv.-t!
  • RecordsAffected tulajdonság értéke csak a lezárás
    után érvényes!
  • Lepecsételt, nem lehet származtatni!

32
PéldaSqlDataReader
  • public void ReadMyData(string myConnString)
  • string mySelectQuery "SELECT OrderID,
    CustomerID FROM Orders"
  • SqlConnection myConnection new
    SqlConnection(myConnString)
  • SqlCommand myCommand new SqlCommand(mySelect
    Query,myConnection)
  • myConnection.Open()
  • SqlDataReader myReader
  • myReader myCommand.ExecuteReader()
  • // Always call Read before accessing data.
  • while ( myReader.Read() )
  • Console.WriteLine( myReader.GetInt32(0)
    ", " myReader.GetString(1))
  • myReader.Close() // always call Close when
    done reading.
  • myConnection.Close() // Close the connection
    when done with it.

33
SqlCommand
  • SQL utasítás, vagy tárolt elj. futtathatunk.
  • Lepecsételt, nem lehet származtatni!
  • Parancs futtatása
  • ExecuteReader több soros lekérdezés
  • ExecuteNonQuery INSERT, DELETE, UPDATE,
    SETDataSet nélküli
  • ExecuteScalar egyszeru típusraLefuttatja az
    utasítást, és visszatér az elso sor elso
    oszlopával.
  • ExecuteXmlReader CommandText -gt XmlReaderAz
    eredmény XML-ben jön vissza.

34
PéldaSqlCommand
  • public void CreateMySqlCommand(string
    myExecuteQuery, SqlConnection myConnection)
  • SqlCommand myCommand new SqlCommand(myExecut
    eQuery, myConnection)
  • myCommand.Connection.Open()
  • int AffectedRows myCommand.ExecuteNon
    Query()
  • myConnection.Close()

35
PéldaExecuteXmlReader
  • public void CreateMyXmlReader(string myXmlQuery,
    SqlConnection myConnection)
  • SqlCommand myCommand new SqlCommand(myXmlQue
    ry, myConnection)
  • try
  • myConnection.Open()
  • System.Xml.XmlReader myXmlReader
    myCommand.ExecuteXmlReader()
  • myXmlReader.Close() // Always close the
    XmlReader when finished.
  • catch(Exception e)
  • System.Diagnostics.EventLog log new
    System.Diagnostics.EventLog()
  • log.Source "My Application"
  • log.WriteEntry(e.ToString())
  • Console.WriteLine("Exception of type 0
    occurred.", e.GetType())
  • finally myConnection.Close()

36
Példakivételkezelés - tranzakciók
  • SqlTransaction myTrans myCommand.Transaction
    myTrans
  • try myCommand.ExecuteNonQuery()
    myTrans.Commit()
  • catch(Exception e)
  • try myTrans.Rollback()
  • catch (SqlException ex)
  • if (myTrans.Connection ! null)
  • Console.WriteLine("An exception of type
    " ex.GetType()
  • " was encountered
    while attempting to roll back the
    transaction.")
  • Console.WriteLine("An exception of type "
    e.GetType()
  • " was encountered while
    inserting the data.")
  • Console.WriteLine("Neither record was
    written to database.")
  • finally myConnection.Close()

37
Változó paraméterek használata
  • Prepare fv. hívása, utána execute.
  • Elotte be kell állítani a paramétereket
  • Értékét
  • Szerver oldali nevét

38
PéldaPrepare
  • int id 20
  • string desc "myFirstRegion"
  • SqlConnection rConn new SqlConnection("Pers
    ist Security InfoFalseIntegrated
    SecuritySSPIdatabasenorthwindservermySQ
    LServer")
  • rConn.Open()
  • SqlCommand command new SqlCommand(null,
    rConn)
  • command.CommandText "insert into Region
    (RegionID, RegionDescription) values (_at_id,
    _at_desc)"
  • command.Parameters.Add ( "_at_id", id)
  • command.Parameters.Add ( "_at_desc", desc)
  • command.Prepare() // Calling Prepare after
    having set the Commandtext and parameters.
  • command.ExecuteNonQuery()
  • command.Parameters0.Value 21
  • command.Parameters1.Value
    "mySecondRegion"
  • command.ExecuteNonQuery()

39
DataSet
  • ADO .NET fo komponense
  • Az adatbázis pufferelt mása a memóriábanDataTable
    objektumok gyujteménye, lehet közöttük
    kapcsolat.
  • Írható, olvasható
  • XML sémájú
  • HTTP-n keresztül valósul meg a kapcsolat
  • A séma betöltheto XML-bol, lementheto XML-be

40
DataAdapter
  • Híd a DataSet és az adatforrás között.
  • Fill feltölti a DataSet-et az adatforrás alapján
  • Update frissíti az adatforrást a DataSet alapján
  • Microsoft SQL esetén használjuk az SqlDataAdapter

41
PéldaDataAdapter
  • public DataSet CreateCmdsAndUpdate(DataSet
    myDataSet,string myConnection,string
    mySelectQuery,string myTableName)
  • OleDbConnection myConn new
    OleDbConnection(myConnection)
  • OleDbDataAdapter myDataAdapter new
    OleDbDataAdapter()
  • myDataAdapter.SelectCommand new
    OleDbCommand(mySelectQuery, myConn)
  • OleDbCommandBuilder custCB new
    OleDbCommandBuilder(myDataAdapter)
  • myConn.Open()
  • DataSet custDS new DataSet()
  • myDataAdapter.Fill(custDS)
  • //code to modify data in dataset here
  • myDataAdapter.Update(custDS)
  • myConn.Close()
  • return custDS

42
Példa - DataSet
  • SqlConnection myConn new SqlConnection(cString)
  • SqlDataAdapter myAdapter new SqlDataAdapter()
  • myAdapter.TableMappings.Add("Table",
    "Suppliers")
  • myConn.Open()
  • SqlCommand myCmd new SqlCommand("SELECT FROM
    Suppliers", myConn)
  • myAdapter.SelectCommand myCmd
  • ds new DataSet("Customers")
  • myAdapter.Fill(ds)
  • SqlDataAdapter adpProducts new
    SqlDataAdapter()
  • adpProducts.TableMappings.Add("Table",
    "Products")
  • SqlCommand cmdProd new SqlCommand("SELECT
    FROM Products", myConn)
  • adpProducts.SelectCommand cmdProd
  • adpProducts.Fill(ds)
    myConn.Close()
  • System.Data.DataRelation dr
  • System.Data.DataColumn dc1, dc2
  • dc1 ds.Tables"Suppliers".Columns"SupplierID"
  • dc2 ds.Tables"Products".Columns"SupplierID"
  • dr new System.Data.DataRelation("suppliers2produ
    cts", dc1, dc2)
  • ds.Relations.Add(dr)

43
Kategóriák
  • 100 névtér
  • I/O (file, stream)
  • Collection (hash táblák, din. tömbök)
  • Reguláris kifejezések
  • Internet
  • Adatbázis
  • Reflekció
  • Diagnosztika
  • Szálkezelés

44
Reflekció fobb jellemzok
  • System.Reflection névtér
  • Információ osztályok MethodInfo,
    ConstructorInfo, MemberInfo,

45
Példa assembly fv.-ei
  • using System
  • using System.Reflection
  • public class LoadInvoke
  • public static void Main(string args)
  • Assembly a Assembly.LoadFrom(args0)
  • Type mytypes a.GetTypes()
  • BindingFlags flags (BindingFlags.NonPubl
    ic BindingFlags.Public
  • BindingFlags.Static
    BindingFlags.Instance BindingFlags.DeclaredOn
    ly)
  • foreach(Type t in mytypes)
  • MethodInfo mi t.GetMethods(flags)
  • Object obj Activator.CreateInstance(
    t)
  • foreach( MethodInfo m in mi)
    m.Invoke(obj, null)

46
Példa - assembly
  • Assembly SampleAssembly
  • SampleAssembly Assembly.LoadFrom("c\\Sample.Ass
    embly.dll")
  • MethodInfo Method SampleAssembly.GetTypes()0.G
    etMethod("Method1")
  • ParameterInfo Params Method.GetParameters()
  • // Display information about method parameters.
  • // Param sParam1
  • // Type System.String
  • // Position 0
  • // OptionalFalse
  • foreach (ParameterInfo Param in Params)
  • Console.WriteLine("Param"
    Param.Name.ToString())
  • Console.WriteLine(" Type"
    Param.ParameterType.ToString())
  • Console.WriteLine(" Position"
    Param.Position.ToString())
  • Console.WriteLine(" Optional"
    Param.IsOptional.ToString())

47
Kategóriák
  • 100 névtér
  • I/O (file, stream)
  • Collection (hash táblák, din. tömbök)
  • Reguláris kifejezések
  • Internet
  • Adatbázis
  • Reflekció
  • Diagnosztika
  • Szálkezelés

48
Diagnosztika fobb tulajdonságok
  • System.Diagnostic névtér
  • EventLogOlvashatunk írhatunk a redszer
    eseményeket.
  • ProcessFutó processzeket monitorozhatjuk.
  • PerformanceCounterA helyi vagy távoli rendszert
    monitorozhatjuk.
  • Debug, Trace Hibakeresés, nyomkövetés

49
PéldaEventLog
  • using System
  • using System.Diagnostics
  • using System.Threading
  • class MySample
  • public static void Main()
  • // Create the source, if it does not
    already exist.
  • if(!EventLog.SourceExists("MySource"))
  • EventLog.CreateEventSource("MySource",
    "MyNewLog")
  • Console.WriteLine("CreatingEventSource
    ")
  • // Create an EventLog instance and assign
    its source.
  • EventLog myLog new EventLog()
  • myLog.Source "MySource"
  • myLog.WriteEntry("Writing to event log.")

50
Példa - diagnosztika
  • using Systemusing System.Diagnostics using
    System.ComponentModel
  • const int ERROR_FILE_NOT_FOUND 2 const int
    ERROR_ACCESS_DENIED 5
  • public void PrintDoc()
  • Process myProcess new Process()
  • try
  • string myDocumentsPath
  • Environment.GetFolderPath(Environment
    .SpecialFolder.Personal)
  • myProcess.StartInfo.FileName
    myDocumentsPath "\\MyFile.doc"
  • myProcess.StartInfo.Verb "Print"
  • myProcess.StartInfo.CreateNoWindow
    true
  • myProcess.Start()
  • catch (Win32Exception e)
  • if(e.NativeErrorCode
    ERROR_FILE_NOT_FOUND) Console.WriteLine(e.M
    essage ". Check the path.")
  • else if (e.NativeErrorCode
    ERROR_ACCESS_DENIED) Console.WriteLine(e.Mes
    sage ". Nincs jog")

51
Példa diagnosztika II
  • try
  • Process myProcess
  • myProcess Process.Start("Notepad.exe
    ")
  • // Display physical memory usage 5
    times at intervals of 2 seconds.
  • for (int i 0i lt 5 i)
  • if (!myProcess.HasExited)
  • myProcess.Refresh()
  • // Print working set to
    console.
  • Console.WriteLine("Physical
    Memory Usage "

  • myProcess.WorkingSet.ToString())
  • Thread.Sleep(2000)
  • else break
  • myProcess.CloseMainWindow()
  • myProcess.Close()
  • catch(Exception e) Console.WriteLine(e.
    Message)

52
Példa - debug
  • public static int Main(string args)
  • Debug.Listeners.Add(new TextWriterTraceListener
    (Console.Out))
  • Debug.AutoFlush true
  • Debug.Indent()
  • Debug.WriteLine("Entering Main")
  • Console.WriteLine("Hello World.")
  • Debug.WriteLine("Exiting Main")
  • Debug.Unindent()
  • return 0
  • public static void MyMethod(Type type, Type
    baseType)
  • Debug.Assert(type ! null, "Type parameter is
    null",
  • "Can't get object for null type")

53
Példa - trace
  • static TraceSwitch mySwitch new
    TraceSwitch("General", "Entire Application")
  • static public void MyMethod()
  • // Write the message if the TraceSwitch level
    is set to Error or higher.
  • if(mySwitch.TraceError)
  • Console.WriteLine("My error message.")
  • // Write the message if the TraceSwitch level
    is set to Verbose.
  • if(mySwitch.TraceVerbose)
  • Console.WriteLine("My second error
    message.")
  • public static void Main(string args)
  • // Run the method that prints error messages
    based on the switch level.
  • MyMethod()

54
Kategóriák
  • 100 névtér
  • I/O (file, stream)
  • Collection (hash táblák, din. tömbök)
  • Reguláris kifejezések
  • Internet
  • Adatbázis
  • Reflekció
  • Diagnosztika
  • Szálkezelés

55
Szálak fobb tulajdonságok
  • System.Threading névtér
  • Szálkezelo fv.-ek
  • Start
  • Abort (AbortException)
  • Interrupt
  • Suspend
  • Join
  • Sleep (statikus)

56
Példa - szálkezelés
  • using System using System.Threading
  • public static void ThreadProc()
  • for (int i 0 i lt 10 i)
  • Console.WriteLine("Thread 0",
    i) Thread.Sleep(100)
  • public static void Main()
  • Console.WriteLine("Main thread Start a
    second thread.")
  • Thread t new Thread( new ThreadStart
    (ThreadProc))
  • t.Start()
  • for (int i 0 i lt 4 i)
  • Console.WriteLine("Main thread Do
    some work.") Thread.Sleep(200)
  • Console.WriteLine("Main thread Call
    Join(), ThreadProc ends.")
  • t.Join()
  • Console.WriteLine("Main thread Press
    Enter to end program.")
  • Console.ReadLine()

57
Példa Get/SetData
  • class Test
  • static void Main()
  • Thread newThreads new Thread4
  • for(int i 0 i lt newThreads.Length
    i)
  • newThreadsi new Thread(
  • new ThreadStart(Slot.SlotTest))
  • newThreadsi.Start()

58
Példa Get/SetData II
  • class Slot
  • static Random randomGenerator static
    LocalDataStoreSlot localSlot
  • static Slot()
  • randomGenerator new Random()
  • localSlot Thread.AllocateDataSlot()
  • public static void SlotTest()
  • Thread.SetData(localSlot,
    randomGenerator.Next(1, 200))
  • Console.WriteLine("Data in thread_0's
    data slot 1,3",
  • AppDomain.GetCurrentThreadId().ToSt
    ring(),
  • Thread.GetData(localSlot).ToSt
    ring())
  • Thread.Sleep(1000) // legyen ideje a
    szálaknak beírni
  • Console.WriteLine("Data in thread_0's
    data slot 1,3",
  • AppDomain.GetCurrentThreadId().ToSt
    ring(),
  • Thread.GetData(localSlot).ToString(
    ))

59
Példa mutex
  • class Test
  • private static Mutex mut new Mutex()
  • private const int numIterations 1
  • private const int numThreads 3
  • static void Main()
  • // szálak létrehozása
  • for(int i 0 i lt numThreads i)
  • Thread myThread new Thread(new
    ThreadStart(MyThreadProc))
  • myThread.Name String.Format("Thread0",
    i 1)
  • myThread.Start()
  • // fo szál kilép, csak a fonalak futnak

60
Példa mutex II
  • private static void MyThreadProc()
  • for(int i 0 i lt numIterations i)
    UseResource()
  • // A szinkronizált eroforrást szimulálja
  • private static void UseResource()
  • mut.WaitOne() // VÁRAKOZUNK ABELÉPÉSRE
  • Console.WriteLine("0 has entered the
    protected area",
  • Thread.CurrentThread.Name)
  • Thread.Sleep(500) // SZIMULÁLJUK AMELÓT
  • Console.WriteLine("0 is leaving the protected
    area\r\n",
  • Thread.CurrentThread.Name)
  • mut.ReleaseMutex() // ELENGEDJÜK A MUTEX-ET
Write a Comment
User Comments (0)
About PowerShow.com