- Details
- Written by: Stanko Milosev
- Category: C#
- Hits: 1370
<?xml version="1.0" encoding="utf-8"?> <urlset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xhtml="http://www.w3.org/1999/xhtml" xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd" xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> <url> <loc>http://www.example.com/</loc> <lastmod>2005-01-01</lastmod> <changefreq>monthly</changefreq> <priority>0.8</priority> </url> </urlset>The model:
using System.Collections.Generic; using System.Xml.Schema; using System.Xml.Serialization; namespace SiteMapXmlCreation { public class Model { [XmlRoot("urlset")] public class Urlset { [XmlAttribute("schemaLocation", Namespace = XmlSchema.InstanceNamespace)] public string SchemaLocation { get; set; } [XmlElement(ElementName = "url")] public List<url> Url { get; set; } } public class url { [XmlElement(ElementName = "loc")] public string Loc { get; set; } [XmlElement(ElementName = "lastmod")] public string Lastmod { get; set; } [XmlElement(ElementName = "changefreq")] public string Changefreq { get; set; } [XmlElement(ElementName = "priority")] public string Priority { get; set; } } } }The Program:
using System.Collections.Generic; using System.IO; using System.Xml.Serialization; namespace SiteMapXmlCreation { class Program { static void Main(string[] args) { Model.Urlset serializedUrlset = new Model.Urlset { Url = new List<Model.url> { new() { Changefreq = "monthly" , Lastmod = "2005-01-01" , Loc = "http://www.example.com/" , Priority = "0.8" } } , SchemaLocation = "http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd" }; TextWriter txtWriter = new StreamWriter(Path.ChangeExtension(System.Reflection.Assembly.GetEntryAssembly().Location, ".xml")); XmlSerializerNamespaces ns = new XmlSerializerNamespaces(); ns.Add(string.Empty, "http://www.sitemaps.org/schemas/sitemap/0.9"); ns.Add("xsi", "http://www.w3.org/2001/XMLSchema-instance"); ns.Add("xhtml", "http://www.w3.org/1999/xhtml"); XmlSerializer xmlSerializer = new XmlSerializer(typeof(Model.Urlset), "http://www.sitemaps.org/schemas/sitemap/0.9"); xmlSerializer.Serialize(txtWriter, serializedUrlset, ns); txtWriter.Close(); } } }Example download from here.
- Details
- Written by: Stanko Milosev
- Category: C#
- Hits: 1312
using System; using System.Threading; using System.Threading.Tasks; namespace AwaitAsyncExample { class Program { static void Main(string[] args) { Task.Run(async () => { await MultipleAwaits(); }); Console.ReadKey(); } static async Task MultipleAwaits() { Task task1 = Task.Run(() => { Thread.Sleep(2_000); Console.WriteLine("Done with first task!"); }); Task task2 = Task.Run(() => { Thread.Sleep(1_000); Console.WriteLine("Done with second task!"); }); Task task3 = Task.Run(() => { Thread.Sleep(1_000); Console.WriteLine("Done with third task!"); }); await Task.WhenAll(task1, task2, task3); } } }Another example:
private static readonly Object ThisLock = new Object(); static void Main(string[] args) { Task.Run(async () => { await MultipleAwaits(); }); Console.ReadKey(); } static async Task MultipleAwaits() { Task task1 = Task.Run(() => { lock (ThisLock) { File.AppendAllText("test.txt", "test 1"); } }); Task task2 = Task.Run(() => { lock (ThisLock) { File.AppendAllText("test.txt", "test 2"); } }); Task task3 = Task.Run(() => { lock (ThisLock) { File.AppendAllText("test.txt", "test 3"); } }); await Task.WhenAll(task1, task2, task3); }Notice:
lock (ThisLock) { File.AppendAllText("test.txt", "test 2"); }Without lock exception "The process cannot access the file 'test.txt' because it is being used by another process." will be raised. One more example in Windows forms:
namespace AsyncTest; public partial class Form1 : Form { public Form1() { InitializeComponent(); btnStart.Click += DoSomeWork; } async void DoSomeWork(object sender, EventArgs e) { label1.Text = "start"; string text = await DoWait(); label1.Text = text; } private Task<string> DoWait() { Task<string> task1 = Task.Run(() => { Thread.Sleep(2_000); return Task.FromResult("did it"); }); return task1; } }
- Details
- Written by: Stanko Milosev
- Category: C#
- Hits: 1952
Create table with code like:
DataTable dtMaster = new DataTable("Master");In this example I will add Columns without specifying type:
dtMaster.Columns.Add("Id");Create new row:
DataRow drMaster = dtMaster.NewRow(); drMaster["Id"] = 1;Add row to DataTable:
dtMaster.Rows.Add(drMaster);Now details table:
DataTable dtDetail = new DataTable("Details"); dtDetail.Columns.Add("Id"); dtDetail.Columns.Add("FkDetailMasterId"); DataRow drDetail = dtDetail.NewRow(); drDetail["Id"] = 1; drDetail["FkDetailMasterId"] = 1; dtDetail.Rows.Add(drDetail);Create DataSet and add relation:
DataSet ds = new DataSet(); ds.Tables.Add(dtMaster); ds.Tables.Add(dtDetail); DataRelation relMasterDetail = new DataRelation("MyRelation" , ds.Tables["Master"].Columns["Id"] , ds.Tables["Details"].Columns["FkDetailMasterId"] ); ds.Relations.Add(relMasterDetail);Example download from here.
- Details
- Written by: Stanko Milosev
- Category: C#
- Hits: 1696
MethodInfoClass mic = new MethodInfoClass(); const BindingFlags bindingFlags = BindingFlags.InvokeMethod | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static | BindingFlags.Instance; System.Reflection.MethodInfo privateTestMethod = typeof(MethodInfoClass).GetMethod("PrivateTestMethod", bindingFlags); if (privateTestMethod is not null) { string returnFromPrivateTestMethod = (string)privateTestMethod.Invoke(mic, null); Console.WriteLine($"privateTestMethod: {returnFromPrivateTestMethod}"); }Example project download from here.