tag:blogger.com,1999:blog-337539912024-03-14T00:18:36.643-07:00Geek GoddessMusings from a Geek Goddess.Bonniehttp://www.blogger.com/profile/11241425687786973525noreply@blogger.comBlogger116125tag:blogger.com,1999:blog-33753991.post-32769755258358849032021-03-21T15:53:00.000-07:002021-03-21T15:53:21.942-07:00Get DataGridView Current Cell Value Using BindingSource<p>A couple of months ago, I ran into a post on the Forums about how to get the value of the currently selected cell of a DataGridView, from the grid's BindingSource. The person asking the question didn't specify what kind of object was specified as the BindingSource's DataSource.</p>
<p>Since I work a lot with DataSets/DataTables, I assumed he was binding his DataGridView to a DataTable, and provided him with this answer to his question:</p>
<div id="codeSnippetWrapper">
<pre id="codeSnippet" style="border-top-style: none; overflow: visible; font-size: 10pt; font-family: 'Courier New', courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #e8d8b7"><span style="color: #008000">// To get the PropertyName of the data in the current cell of the DataGridView</span><br /><span style="color: #0000ff">string</span> colName = <span style="color: #0000ff">this</span>.dataGridView1.CurrentCell.OwningColumn.DataPropertyName;<br /> <br /><span style="color: #008000">// Use an object for the value of the DataRow column</span><br /><span style="color: #0000ff">object</span> colValue = <span style="color: #0000ff">null</span>;<br /> <br /><span style="color: #008000">// Now, let's find the value that's in that cell, where this.bs is the BindingSource:</span><br /><span style="color: #0000ff">if</span> (<span style="color: #0000ff">this</span>.bs.DataSource <span style="color: #0000ff">is</span> DataTable)<br /> colValue = ((DataTable)<span style="color: #0000ff">this</span>.bs.DataSource).Rows[<span style="color: #0000ff">this</span>.bs.Position][colName];<br /><span style="color: #0000ff">else</span> <span style="color: #0000ff">if</span> (<span style="color: #0000ff">this</span>.bs.DataSource <span style="color: #0000ff">is</span> DataSet)<br />{<br /> DataTable dt = ((DataSet)<span style="color: #0000ff">this</span>.bs.DataSource).Tables[<span style="color: #0000ff">this</span>.bs.DataMember];<br /> colValue = dt.Rows[<span style="color: #0000ff">this</span>.bs.Position][colName];<br />}</pre>
<br /></div>
<p>You can find the Type of the bound column by using this line of code if you need to know that as well:</p>
<div id="codeSnippetWrapper">
<pre id="codeSnippet" style="border-top-style: none; overflow: visible; font-size: 10pt; font-family: 'Courier New', courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #e8d8b7">Type colType = <span style="color: #0000ff">this</span>.dataGridView1.CurrentCell.OwningColumn.ValueType;</pre>
<br /></div>
<p>The nice thing about using DataTables for databinding grids with a BindingSource, is that it is automatically two-way databinding. If you make a change in the grid's cell, it populates the column in the row of the DataTable. Likewise, if the underlying data in the DataTable is changed programmatically, it will immediately show in the grid's cell.</p>
<p>OK, so what about other kinds of DataSources? Let's take a look:</p>
<h3><font size="3">BindingList</font></h3>
<p>If you have a List of a particular class, say a Person class, you'll want to use a BindingList for your DataGridView's DataSource. In order to be sure that your Person class will support two-way databinding, your class will need to implement the INotifyPropertyChanged interface. Here is a sample Person class with the interface implemented (be sure to add a "using <a href="http://system.runtime.compilerservices/">System.Runtime.CompilerServices</a>" directive ... it is needed for the INotifyPropertyChanged implementation) :</p>
<div id="codeSnippetWrapper">
<pre id="codeSnippet" style="border-top-style: none; overflow: visible; font-size: 10pt; font-family: 'Courier New', courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #e8d8b7"><span style="color: #0000ff">private</span> <span style="color: #0000ff">class</span> Person : IPerson, INotifyPropertyChanged<br />{<br /> <span style="color: #008000">// Fields and Properties</span><br /> <span style="color: #0000ff">private</span> <span style="color: #0000ff">string</span> m_FirstName = <span style="color: #006080">""</span>;<br /> <span style="color: #0000ff">private</span> <span style="color: #0000ff">string</span> m_LastName = <span style="color: #006080">""</span>;<br /> <br /> <span style="color: #0000ff">public</span> <span style="color: #0000ff">string</span> FirstName<br /> { get { <span style="color: #0000ff">return</span> <span style="color: #0000ff">this</span>.m_FirstName; }<br /> set<br /> { <br /> <span style="color: #0000ff">if</span> (<span style="color: #0000ff">value</span> != <span style="color: #0000ff">this</span>.m_FirstName)<br /> {<br /> <span style="color: #0000ff">this</span>.m_FirstName = <span style="color: #0000ff">value</span>;<br /> <span style="color: #0000ff">this</span>.NotifyPropertyChanged();<br /> }<br /> }<br /> }<br /> <span style="color: #0000ff">public</span> <span style="color: #0000ff">string</span> LastName<br /> { get { <span style="color: #0000ff">return</span> <span style="color: #0000ff">this</span>.m_LastName; }<br /> set<br /> {<br /> <span style="color: #0000ff">if</span> (<span style="color: #0000ff">value</span> != <span style="color: #0000ff">this</span>.m_LastName)<br /> {<br /> <span style="color: #0000ff">this</span>.m_LastName = <span style="color: #0000ff">value</span>;<br /> <span style="color: #0000ff">this</span>.NotifyPropertyChanged();<br /> }<br /> }<br /> }<br /> <br /> <span style="color: #008000">// Constructors</span><br /> <span style="color: #0000ff">public</span> Person()<br /> {<br /> FirstName = <span style="color: #006080">""</span>;<br /> LastName = <span style="color: #006080">""</span>;<br /> }<br /> <span style="color: #0000ff">public</span> Person(<span style="color: #0000ff">string</span> first, <span style="color: #0000ff">string</span> last)<br /> {<br /> FirstName = first;<br /> LastName = last;<br /> }<br /><br /> <br /> <span style="color: #008000">// PropertyChanged stuff</span><br /> <span style="color: #0000ff">public</span> <span style="color: #0000ff">event</span> PropertyChangedEventHandler PropertyChanged;<br /> <span style="color: #0000ff">private</span> <span style="color: #0000ff">void</span> NotifyPropertyChanged([CallerMemberName] String propertyName = <span style="color: #006080">""</span>)<br /> {<br /> <span style="color: #0000ff">if</span> (PropertyChanged != <span style="color: #0000ff">null</span>)<br /> {<br /> PropertyChanged(<span style="color: #0000ff">this</span>, <span style="color: #0000ff">new</span> PropertyChangedEventArgs(propertyName));<br /> }<br /> }<br />}<br /></pre>
<br /></div>
<p>Next, I populated a List<Person> for this example: </p>
<div id="codeSnippetWrapper">
<pre id="codeSnippet" style="border-top-style: none; overflow: visible; font-size: 10pt; font-family: 'Courier New', courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #e8d8b7"><span style="color: #008000">//populate a List<Person> for testing</span><br />List<Person> listPerson = <span style="color: #0000ff">new</span> List<Person>();<br />Person pers;<br /><span style="color: #0000ff">for</span> (<span style="color: #0000ff">int</span> i = 0; i < 5; i++)<br />{<br /> pers = <span style="color: #0000ff">new</span> Person();<br /> pers.FirstName = i.ToString();<br /> pers.LastName = <span style="color: #006080">"L"</span> + i.ToString();<br /> listPerson.Add(pers);<br />}<br /></pre>
<br /></div>
<p>And last, create the binding stuff:</p>
<div id="codeSnippetWrapper">
<pre id="codeSnippet" style="border-top-style: none; overflow: visible; font-size: 10pt; font-family: 'Courier New', courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #e8d8b7"><span style="color: #008000">//create a BindingList and a BindingSource and set the grid's DataSource to the BindingSource</span><br />BindingList<Person> bindingList = <span style="color: #0000ff">new</span> BindingList<Person>(listPerson);<br />BindingSource bsB = <span style="color: #0000ff">new</span> BindingSource();<br />bsB.DataSource = bindingList;<br /><span style="color: #0000ff">this</span>.dataGridView1.DataSource = bsB;</pre>
<br /></div>
<p>Finding the value in that cell using only the colName and BindingSource will be a little trickier than it was for a DataTable. But we can make use of the PropertyInfo class and reflection to get that very easily.</p>
<div id="codeSnippetWrapper">
<pre id="codeSnippet" style="border-top-style: none; overflow: visible; font-size: 10pt; font-family: 'Courier New', courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #e8d8b7"><span style="color: #008000">// First, Get the PropertyName of the current cell of the DataGridView (same as before)</span><br /><span style="color: #0000ff">string</span> colName = <span style="color: #0000ff">this</span>.dataGridView1.CurrentCell.OwningColumn.DataPropertyName;<br /> <br /><span style="color: #008000">// And find the value that is in that cell, using the BindingSource</span><br />BindingSource bs = (BindingSource)<span style="color: #0000ff">this</span>.dataGridView1.DataSource;<br />BindingList<Person> bl = (BindingList<Person>)bs.DataSource;<br /> <br /><span style="color: #008000">// PropertyInfo and reflection</span><br />PropertyInfo pi = bl[bs.Position].GetType().GetProperty(colName);<br /><span style="color: #0000ff">object</span> colValue = pi.GetAccessors()[0].Invoke(bl[bs.Position], <span style="color: #0000ff">null</span>);<br /></pre>
<br /></div>
<p>Before I go any further, you're probably wondering if it's necessary to use a BindingSource *and* a BindingList. Well, not really. If you use the BindingList as the grid's DataSource directly, everything works fine (meaning, you will have two-way databinding), but if you don't use a BindingSource, you don't have the benefit of knowing what position (row) contains the CurrentCell. That's not a problem if you don't need it, you can use the CurrentCell.RowIndex for that. And, for that matter, you can use the CurrentCell.Value and not have to worry about any of this!! However, for the question I was answering on the forums, the requirement was to find the value using the BindingSource. So, there you go.  ;0)</p>
<p>Here is a blog post I wrote about 5 years ago explaining the reflection methodology:</p>
<p><a href="https://geek-goddess-bonnie.blogspot.com/2016/07/pemstatus-more-with-reflection-in-net.html" target="_blank">https://geek-goddess-bonnie.blogspot.com/2016/07/pemstatus-more-with-reflection-in-net.html</a></p>
<p>Taking an example from that blog post, let's use a method to make this easier. Here's the method:</p>
<div id="codeSnippetWrapper">
<pre id="codeSnippet" style="border-top-style: none; overflow: visible; font-size: 10pt; font-family: 'Courier New', courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #e8d8b7"><span style="color: #0000ff">public</span> <span style="color: #0000ff">object</span> GetPropertyValue(<span style="color: #0000ff">object</span> o, <span style="color: #0000ff">string</span> name)<br />{<br /> PropertyInfo pi = o.GetType().GetProperty(name);<br /> <span style="color: #0000ff">if</span> (pi != <span style="color: #0000ff">null</span>)<br /> <span style="color: #0000ff">return</span> pi.GetAccessors()[0].Invoke(o, <span style="color: #0000ff">null</span>);<br /> <span style="color: #0000ff">else</span><br /> <span style="color: #0000ff">return</span> <span style="color: #0000ff">null</span>;<br />}<br /></pre>
<br /></div>
<p>Use it like this:</p>
<div id="codeSnippetWrapper">
<pre id="codeSnippet" style="border-top-style: none; overflow: visible; font-size: 10pt; font-family: 'Courier New', courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #e8d8b7"><span style="color: #0000ff">string</span> colName = <span style="color: #0000ff">this</span>.dataGridView1.CurrentCell.OwningColumn.DataPropertyName;<br />BindingSource bs = (BindingSource)<span style="color: #0000ff">this</span>.dataGridView1.DataSource;<br />BindingList<Person> bl = (BindingList<Person>)bs.DataSource;<br /> <br /><span style="color: #0000ff">object</span> colValue = GetPropertyValue(bl[bs.Position], colName);</pre>
<br /></div>
<p>How about we do something even cooler! Let's make a generic method that will do all the heavy lifting. At first, I thought that I'd have to use a method signature with generics, like this (where, in this case, T would be Person when the method is called):</p>
<div id="codeSnippetWrapper">
<pre id="codeSnippet" style="border-top-style: none; overflow: visible; font-size: 10pt; font-family: 'Courier New', courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #e8d8b7"><span style="color: #0000ff">public</span> <span style="color: #0000ff">object</span> GetValueFromBindingSource<T>(BindingSource bs, <span style="color: #0000ff">string</span> propertyName, T listClass)</pre>
<br /></div>
<p>But, as it turned out, that's not necessary. We can cast the bs.DataSource to an IBindingList and it all works perfectly. So <T> generic methods are not necessary! We get this instead:</p>
<div id="codeSnippetWrapper">
<pre id="codeSnippet" style="border-top-style: none; overflow: visible; font-size: 10pt; font-family: 'Courier New', courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #e8d8b7"><span style="color: #0000ff">public</span> <span style="color: #0000ff">object</span> GetValueFromBindingSource(BindingSource bs, <span style="color: #0000ff">string</span> propertyName)<br />{<br /> <span style="color: #0000ff">object</span> objValue = <span style="color: #0000ff">null</span>;<br /> <span style="color: #0000ff">if</span> (bs.DataSource <span style="color: #0000ff">is</span> DataTable)<br /> objValue = ((DataTable)bs.DataSource).Rows[bs.Position][propertyName];<br /> <span style="color: #0000ff">else</span> <span style="color: #0000ff">if</span> (bs.DataSource <span style="color: #0000ff">is</span> DataSet)<br /> {<br /> DataTable dtNW = ((DataSet)bs.DataSource).Tables[bs.DataMember];<br /> objValue = dtNW.Rows[bs.Position][propertyName];<br /> }<br /> <span style="color: #0000ff">else</span> <span style="color: #0000ff">if</span> (bs.DataSource <span style="color: #0000ff">is</span> IBindingList)<br /> {<br /> IBindingList bl = (IBindingList)bs.DataSource;<br /> objValue = GetPropertyValue(bl[bs.Position], propertyName);<br /> }<br /> <span style="color: #0000ff">return</span> currValue;<br />}<br /><br /></pre>
<br /></div>
<p>The above method will work for any DataGridView.DataSource, whether it's a DataSet, DataTable or any kind of BindingList.. And, you'd call it like this:</p>
<div id="codeSnippetWrapper">
<pre id="codeSnippet" style="border-top-style: none; overflow: visible; font-size: 10pt; font-family: 'Courier New', courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #e8d8b7"><span style="color: #0000ff">string</span> colName = <span style="color: #0000ff">this</span>.dataGridView1.CurrentCell.OwningColumn.DataPropertyName;<br />BindingSource bs = (BindingSource)<span style="color: #0000ff">this</span>.dataGridView1.DataSource;<br /> <br /><span style="color: #0000ff">object</span> colValue = GetValueFromBindingSource(bs, colName);<br /></pre>
<br /></div>
<h3><font size="3">ObservableCollection</font></h3>
<p>One more thing worth mentioning is that the BindingList can also be used with an ObservableCollection. In fact, you *have* to use a BindingList for your ObservableCollection,  because otherwise you only get one-way databinding (grid-to-collection). The reason that the ObservableCollection doesn't work two-way as a BindingSource is because it doesn't implement the INotifyPropertyChanged interface, only the INotifyChanged, which doesn't help in this situation. But, stick it in a BindingList and that'll work fine (the syntax is the same as above):</p>
<div id="codeSnippetWrapper">
<pre id="codeSnippet" style="border-top-style: none; overflow: visible; font-size: 10pt; font-family: 'Courier New', courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #e8d8b7">ObservableCollection<Person> collPerson = <span style="color: #0000ff">new</span> ObservableCollection<Person>();<br /><span style="color: #008000">// Fill your collection, I won't bother with coding that</span><br /><span style="color: #008000">// Then set your BindingList. As you can see, it's the same syntax as adding the listPerson:</span><br />BindingList<Person> bl = <span style="color: #0000ff">new</span> BindingList<Person>(collPerson);</pre>
<br /></div>
That's it for now. Happy Coding!  =0)
Bonniehttp://www.blogger.com/profile/11241425687786973525noreply@blogger.com0tag:blogger.com,1999:blog-33753991.post-50451026787061808372021-01-30T15:51:00.000-08:002021-01-30T15:51:03.893-08:00Wayback Machine<p><span style="font-family: Tahoma;">You may be familiar with the Wayback Machine from old "Mr. Peabody and Sherman" segments on the "Rocky and Bullwinkle" cartoon series (1959 to 1964). If not, I just discovered that there was an animated "Mr. Peabody and Sherman" movie in 2014 and another animated TV series in 2015. If you're not familiar with any of this, the Wayback Machine is basically a time machine that Mr. Peabody (who is a very smart dog) invented.</span></p><div style="box-sizing: border-box; font-family: Tahoma; margin: 0px; padding: 0px;">Now, what does this have to do with software development? Well, nothing specifically, unless you are trying to find a website that you *knew* existed once upon a time, and you even have a link for it ... but it's either gone or hijacked or, even worse, has been taken over by malware! That is what happened to a link I had used on a blog post in October (see <a href="https://geek-goddess-bonnie.blogspot.com/2020/10/configure-msdtc-for-distributed.html" target="_blank">https://geek-goddess-bonnie.blogspot.com/2020/10/configure-msdtc-for-distributed.html</a> ) and I had to scramble to be able to provide the information to write that blog post. </div><div style="box-sizing: border-box; font-family: Tahoma; margin: 0px; padding: 0px;"><br style="box-sizing: border-box;" /></div><div style="box-sizing: border-box; font-family: Tahoma; margin: 0px; padding: 0px;">At the time I wrote that post, I had totally forgotten about using the web version (as opposed to the cartoon version) of the Wayback Machine (<a href="https://web.archive.org/" target="_blank">https://web.archive.org/</a> ). I recently searched for the link that I had wanted to use in that October post and found many versions of it, because the web archive crawls many websites and takes snapshots of them at intervals, so one site can have many entries. Case in point, the blog post entry I was interested in was crawled 105 times between May 2015 and February 2020 (sometime after that point in time, it was compromised).</div><div style="box-sizing: border-box; font-family: Tahoma; margin: 0px; padding: 0px;"><br /></div><div style="box-sizing: border-box; font-family: Tahoma; margin: 0px; padding: 0px;">Anyway, here's a link to the archived post (and, I just updated my old October blog post with this link as well):</div><div style="box-sizing: border-box; font-family: Tahoma; margin: 0px; padding: 0px;"><a href="https://web.archive.org/web/20160615025531/http://yrushka.com/index.php/sql-server/security/configure-msdtc-for-distributed-transactions/" target="_blank">https://web.archive.org/web/20160615025531/http://yrushka.com/index.php/sql-server/security/configure-msdtc-for-distributed-transactions/</a><br /></div><div style="box-sizing: border-box; font-family: Tahoma; margin: 0px; padding: 0px;"><br /></div><div style="box-sizing: border-box; font-family: Tahoma; margin: 0px; padding: 0px;">Have fun exploring the Wayback Machine! =0) </div>Bonniehttp://www.blogger.com/profile/11241425687786973525noreply@blogger.com4tag:blogger.com,1999:blog-33753991.post-28854550834812033552020-12-27T18:37:00.000-08:002020-12-27T18:37:23.469-08:00Gotcha With Spaces In Path or Filename<p>I came across an interesting problem on the Forums today. The guy was having problems with files with spaces in the name. He was trying to run a Process (using the System.Diagnostics.Process class), but it wouldn't recognize the file as existing. </p>
<p>For example, take a look at this (my version of his problem):</p>
<div id="codeSnippetWrapper">
<pre id="codeSnippet" style="border-top-style: none; overflow: visible; font-size: 10pt; font-family: 'Courier New', courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #e8d8b7"><span style="color: #0000ff">string</span> path = <span style="color: #006080">@"D:\Downloads\WCF Examples\WF_WCF_Samples\";<br />string name = "</span>MSDN Readmes.txt<span style="color: #006080">";<br /> <br />if (File.Exists(path + name)) <br />{<br /> var process = new Process();<br /> process.StartInfo.FileName = "</span>Notepad++.exe";<br /> process.StartInfo.Arguments = path + name; <br /> process.Start();<br />}</pre>
<br /></div>
<p>The path + name is valid (and File.Exists() returns true), but when trying to Start the Notepad++ app, it can't find this file!!  It appears to be because of the spaces (but there is more to it than that, I'll explain as we go along).</p>
<p>The problem doesn't occur for all applications. When I tried Notepad instead of Notepad++, it worked! So, you might think, aha! it has to be a Microsoft app instead of a 3rd party app! And, you would be wrong in thinking that, because the same problem occurs with Word or Excel. Back to the drawing board!</p>
<p>Hmmm, maybe we should use Path.Combine() to be absolutely sure that we've got a valid file. So, let's try this:</p>
<p> </p>
<div id="codeSnippetWrapper">
<pre id="codeSnippet" style="border-top-style: none; overflow: visible; font-size: 10pt; font-family: 'Courier New', courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #e8d8b7">process.StartInfo.Arguments = Path.Combine(path, name);</pre>
<br /></div>
<p>Note that in the above code, path + name is valid, but to be absolutely sure, you should always use the <a href="http://path.combine/">Path.Combine</a>() method. For example, if your path does not have a trailing backslash (\), then path + name will give you this:  D:\MyPathMyFile.txt, but <a href="http://path.combine%28path/">Path.Combine(path</a>, name) correctly puts the backslash in there (but only when needed) and you will get this:  D:\MyPath\MyFile.txt</p>
<p>It was suggested that perhaps it's a C drive thing vs any other drive. Nope, I got the same behavior trying to Start Word with a path/name with spaces on the C drive. </p>
<p>So, what's going on? Turns out that to be sure it works every time, a path and filename with spaces in it should be enclosed with quotes. That will take care of it for any application!! </p>
<p>So, let's create a helper method and use it like this:</p>
<div id="codeSnippetWrapper">
<pre id="codeSnippet" style="border-top-style: none; overflow: visible; font-size: 10pt; font-family: 'Courier New', courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #e8d8b7"><br /> process.StartInfo.Arguments = AddQuotesForWhiteSpace(Path.Combine(path, name)); <br /> <br /><span style="color: #008000">// And here's the helper method</span><br /><span style="color: #0000ff">public</span> <span style="color: #0000ff">string</span> AddQuotesForWhiteSpace(<span style="color: #0000ff">string</span> path)<br />{<br /> <span style="color: #0000ff">return</span> !<span style="color: #0000ff">string</span>.IsNullOrWhiteSpace(path) ?<br /> path.Contains(<span style="color: #006080">" "</span>) && !path.StartsWith(<span style="color: #006080">"\""</span>) && !path.EndsWith(<span style="color: #006080">"\""</span>) ?<br /> <span style="color: #006080">"\""</span> + path + <span style="color: #006080">"\""</span> : path :<br /> <span style="color: #0000ff">string</span>.Empty;<br />}<br /></pre>
<br /></div>
<p>For readability, you could change it to the following (it does the same thing, so it's up to you as to whether you prefer brevity or readability).</p>
<div id="codeSnippetWrapper">
<pre id="codeSnippet" style="border-top-style: none; overflow: visible; font-size: 10pt; font-family: 'Courier New', courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #e8d8b7"><span style="color: #0000ff">public</span> <span style="color: #0000ff">string</span> AddQuotesForWhiteSpace(<span style="color: #0000ff">string</span> path)<br />{<br /> <span style="color: #0000ff">if</span> (<span style="color: #0000ff">string</span>.IsNullOrWhiteSpace(path))<br /> <span style="color: #0000ff">return</span> <span style="color: #0000ff">string</span>.Empty;<br /> <br /> <span style="color: #0000ff">if</span> (path.Contains(<span style="color: #006080">" "</span>) && !path.StartsWith(<span style="color: #006080">"\""</span>) && !path.EndsWith(<span style="color: #006080">"\""</span>))<br /> <span style="color: #0000ff">return</span> <span style="color: #006080">"\""</span> + path + <span style="color: #006080">"\""</span>;<br /> <span style="color: #0000ff">else</span><br /> <span style="color: #0000ff">return</span> path;<br />}<br /></pre>
<br /></div>
<p>Note that the above methods simply put quotes around the entire parameter that's passed to it (but only if there are any spaces in there) and then the process.Start() method is happy!</p>
<p>Happy Coding and Happy Holidays!</p>Bonniehttp://www.blogger.com/profile/11241425687786973525noreply@blogger.com4tag:blogger.com,1999:blog-33753991.post-28520100199510871082020-10-16T13:04:00.000-07:002020-10-16T13:04:47.320-07:00Use MSMQ For Logging Errors And Informational Items<p>I was involved in writing a Windows Service application several years ago, and one of the requirements was to have a methodology for logging error messages and informational messages. For various reasons (which I won't go into in this blog post, as they are not relevant to the topic), we didn't want to write to the Windows Event Log. Instead, we opted to write such messages into a SQL Server database table.</p>
<p>We needed "must deliver" capabilities for these messages ... by that I mean that if something went wrong with the application, the messages still needed to be able to be "delivered" to the database, which we accomplished by Transactions and Message Queuing (MSMQ). By making the MSMQ queue "transactional", messages would remain in the queue until able to be delivered to the database.</p>
<p>There are two parts to this process. </p>
<ul>
<li>
<p>First, there's a class I'll call OutputLog, containing static properties and methods. This class allows you to easily send a message (composed of a string of information and an optional category) to a queue (MSMQ) by calling a static method, WriteLog("your message") from any place in your application.</p>
</li>
<li>
<p>Second, there's a class I'll call ProcessLog, which is a continuously running Thread that reads from the MSMQ queue and writes the message to a database. In the examples I'll show, it's simply doing a Console.WriteLine() rather than messing with a database (I've shown commented-out code for the database parts).</p>
</li>
</ul>
<p>I have put all of this example into a solution that you can download and run to see it in action. You can download it here:  </p>
<p>We needed "must deliver" capabilities for these messages ... by that I mean that if something went wrong with the application, the messages still needed to be able to be "delivered" to the database, which we accomplished by Transactions and Message Queuing (MSMQ). By making the MSMQ queue "transactional", messages would remain in the queue until able to be delivered to the database.</p>
<p>There are two parts to this process. </p>
<ul>
<li>
<p>First, there's a class I'll call OutputLog, containing static properties and methods. This class allows you to easily send a message (composed of a string of information and an optional category) to a queue (MSMQ) by calling a static method, WriteLog("your message") from any place in your application.</p>
</li>
<li>
<p>Second, there's a class I'll call ProcessLog, which is a continuously running Thread that reads from the MSMQ queue and writes the message to a database. In the examples I'll show, it's simply doing a Console.WriteLine() rather than messing with a database (I've shown commented-out code for the database parts).</p>
</li>
</ul>
<p>I have put all of this example into a solution that you can download and run to see it in action. You can download it here:  </p>
<p>We needed "must deliver" capabilities for these messages ... by that I mean that if something went wrong with the application, the messages still needed to be able to be "delivered" to the database, which we accomplished by Transactions and Message Queuing (MSMQ). By making the MSMQ queue "transactional", messages would remain in the queue until able to be delivered to the database.</p>
<p>There are two parts to this process. </p>
<ul>
<li>
<p>First, there's a class I'll call OutputLog, containing static properties and methods. This class allows you to easily send a message (composed of a string of information and an optional category) to a queue (MSMQ) by calling a static method, WriteLog("your message") from any place in your application.</p>
</li>
<li>
<p>Second, there's a class I'll call ProcessLog, which is a continuously running Thread that reads from the MSMQ queue and writes the message to a database. In the examples I'll show, it's simply doing a Console.WriteLine() rather than messing with a database (I've shown commented-out code for the database parts).</p>
</li>
</ul>
<p>I have put all of this example into a solution that you can download and run to see it in action. You can download it here:</p>
<p><a href="https://drive.google.com/file/d/15jlrINUobZA5kXf4_G46icQxj1Oer4WW/view" target="_blank">ConsoleMSMQLogging</a>  </p>
<p>The code in the downloaded project has comments, that are hopefully self-explanatory. But I'm going to show bits and pieces of it here as well. So now, let's see some code.</p>
<p>First, the OutputLog class. You can see from this code that everything is static.</p>
<p> </p>
<div id="codeSnippetWrapper">
<pre id="codeSnippet" style="border-top-style: none; overflow: visible; font-size: 10pt; font-family: 'Courier New', courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #e8d8b7"><span style="color: #008000">// For MSMQ, be sure to add: using System.Messaging;</span><br /><span style="color: #008000">// You may also have to add it to your Project's references, it's not one of the normal references</span><br /><span style="color: #008000">//</span><br /><span style="color: #008000">// For the DataContract (in DataLog class), add: using System.Runtime.Serialization;</span><br /><span style="color: #008000">// Make sure to add it to your Project's references also.</span><br /><span style="color: #0000ff">public</span> <span style="color: #0000ff">class</span> OutputLog<br />{<br /> <span style="color: #cc6633">#region</span> Declarations/Properties<br /> <br /> <span style="color: #008000">// The MSMQ name *must* start with ".\\private$\\"</span><br /> <span style="color: #0000ff">protected</span> <span style="color: #0000ff">static</span> <span style="color: #0000ff">string</span> m_QueueName = <span style="color: #006080">".\\private$\\MyApplication.Shared.OutputLog"</span>;<br /> <span style="color: #0000ff">public</span> <span style="color: #0000ff">static</span> <span style="color: #0000ff">string</span> QueueName<br /> {<br /> get { <span style="color: #0000ff">return</span> m_QueueName; }<br /> <span style="color: #008000">// If you want a different queue name for different purposes</span><br /> set { m_QueueName = m_QueueName.Replace(<span style="color: #006080">"Shared"</span>, <span style="color: #0000ff">value</span>); }<br /> }<br /> <span style="color: #008000">// Since messages are written to the database, we must have the Connection String set</span><br /> <span style="color: #008000">// So, this is a good spot to set up the Message Queue while we're at it</span><br /> <span style="color: #0000ff">protected</span> <span style="color: #0000ff">static</span> <span style="color: #0000ff">string</span> m_LoggingConnectionString;<br /> <span style="color: #0000ff">public</span> <span style="color: #0000ff">static</span> <span style="color: #0000ff">string</span> LoggingConnectionString<br /> {<br /> get { <span style="color: #0000ff">return</span> m_LoggingConnectionString; }<br /> set<br /> {<br /> m_LoggingConnectionString = <span style="color: #0000ff">value</span>;<br /> SetupQueue(QueueName);<br /> }<br /> }<br /> <span style="color: #0000ff">public</span> <span style="color: #0000ff">static</span> MessageQueue OutputQueue { get; set; }<br /> <br /> <span style="color: #008000">// private</span><br /> <span style="color: #0000ff">private</span> <span style="color: #0000ff">static</span> <span style="color: #0000ff">object</span> lockobject = <span style="color: #0000ff">new</span> <span style="color: #0000ff">object</span>();<br /> <br /> <span style="color: #cc6633">#endregion</span><br /> <br /> <span style="color: #cc6633">#region</span> Methods<br /> <br /> <span style="color: #008000">//public</span><br /> <span style="color: #0000ff">public</span> <span style="color: #0000ff">static</span> <span style="color: #0000ff">void</span> WriteLog(<span style="color: #0000ff">string</span> message)<br /> {<br /> Send(<span style="color: #0000ff">new</span> DataLog(DateTime.Now, message));<br /> }<br /> <span style="color: #0000ff">public</span> <span style="color: #0000ff">static</span> <span style="color: #0000ff">void</span> WriteLog(<span style="color: #0000ff">string</span> message, <span style="color: #0000ff">string</span> category)<br /> {<br /> Send(<span style="color: #0000ff">new</span> DataLog(DateTime.Now, message, category));<br /> }<br /> <br /> <span style="color: #008000">//protected</span><br /> <span style="color: #0000ff">protected</span> <span style="color: #0000ff">static</span> <span style="color: #0000ff">void</span> Send(DataLog data)<br /> {<br /> System.Messaging.Message msg = <span style="color: #0000ff">new</span> Message(data);<br /> Send(msg);<br /> }<br /> <span style="color: #0000ff">protected</span> <span style="color: #0000ff">static</span> <span style="color: #0000ff">void</span> Send(System.Messaging.Message msg)<br /> {<br /> <span style="color: #0000ff">if</span> (OutputQueue == <span style="color: #0000ff">null</span>)<br /> <span style="color: #0000ff">return</span>;<br /> <span style="color: #0000ff">lock</span> (lockobject)<br /> {<br /> <span style="color: #0000ff">using</span> (MessageQueueTransaction tx = <span style="color: #0000ff">new</span> MessageQueueTransaction())<br /> {<br /> tx.Begin();<br /> <span style="color: #0000ff">try</span><br /> {<br /> OutputQueue.Send(msg, tx);<br /> tx.Commit();<br /> }<br /> <span style="color: #0000ff">catch</span> (Exception ex)<br /> {<br /> tx.Abort();<br /> }<br /> }<br /> }<br /> }<br /> <span style="color: #0000ff">protected</span> <span style="color: #0000ff">static</span> <span style="color: #0000ff">void</span> SetupQueue(<span style="color: #0000ff">string</span> QueueName)<br /> {<br /> <span style="color: #0000ff">if</span> (!MessageQueue.Exists(QueueName))<br /> {<br /> <span style="color: #008000">// The true parameter makes it transactional</span><br /> MessageQueue.Create(QueueName, <span style="color: #0000ff">true</span>);<br /> }<br /> OutputQueue = <span style="color: #0000ff">new</span> MessageQueue(<span style="color: #006080">"FormatName:DIRECT=OS:"</span> + QueueName);<br /> OutputQueue.Formatter = <span style="color: #0000ff">new</span> XmlMessageFormatter(<span style="color: #0000ff">new</span> Type[] { <span style="color: #0000ff">typeof</span>(DataLog) });<br /> OutputQueue.MessageReadPropertyFilter = SettingsForQueue.SetPropertyFilter();<br /> }<br /> <span style="color: #cc6633">#endregion</span><br />}</pre>
<br /></div>
<p>Two other classes are needed by the OutputLog class (and also needed by the ProcessLog class, which I'll show after these two): the DataLog class (which is a serializable object that contains the data that gets written to the database), and a SettingsForQueue class (which sets a MSMQ MessagePropertyFilter for the Queue you are creating):</p>
<div id="codeSnippetWrapper">
<pre id="codeSnippet" style="border-top-style: none; overflow: visible; font-size: 10pt; font-family: 'Courier New', courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #e8d8b7">[DataContract(Namespace = <span style="color: #006080">"http://MyCompanyName"</span>)]<br />[Serializable]<br /><span style="color: #0000ff">public</span> <span style="color: #0000ff">class</span> DataLog<br />{<br /> <span style="color: #0000ff">private</span> <span style="color: #0000ff">static</span> <span style="color: #0000ff">object</span> lockobject = <span style="color: #0000ff">new</span> <span style="color: #0000ff">object</span>();<br /> [DataMember]<br /> <span style="color: #0000ff">public</span> DateTime LogTime { get; set; }<br /> [DataMember]<br /> <span style="color: #0000ff">public</span> <span style="color: #0000ff">string</span> Message { get; set; }<br /> [DataMember]<br /> <span style="color: #0000ff">public</span> <span style="color: #0000ff">string</span> Category { get; set; }<br /> <br /> <span style="color: #0000ff">public</span> DataLog() { }<br /> <span style="color: #0000ff">public</span> DataLog(DateTime time, <span style="color: #0000ff">string</span> message)<br /> {<br /> <span style="color: #0000ff">lock</span> (lockobject)<br /> {<br /> LogTime = time;<br /> Message = message;<br /> Category = <span style="color: #006080">""</span>;<br /> }<br /> }<br /> <span style="color: #0000ff">public</span> DataLog(DateTime time, <span style="color: #0000ff">string</span> message, <span style="color: #0000ff">string</span> category)<br /> {<br /> <span style="color: #0000ff">lock</span> (lockobject)<br /> {<br /> LogTime = time;<br /> Message = message;<br /> Category = category;<br /> }<br /> }<br />}<br /><span style="color: #0000ff">public</span> <span style="color: #0000ff">class</span> SettingsForQueue<br />{<br /> <span style="color: #0000ff">public</span> <span style="color: #0000ff">static</span> MessagePropertyFilter SetPropertyFilter()<br /> {<br /> MessagePropertyFilter filter = <span style="color: #0000ff">new</span> MessagePropertyFilter();<br /> filter.SetDefaults();<br /> filter.AppSpecific = <span style="color: #0000ff">true</span>;<br /> filter.Label = <span style="color: #0000ff">true</span>;<br /> filter.Priority = <span style="color: #0000ff">true</span>;<br /> filter.Extension = <span style="color: #0000ff">true</span>;<br /> filter.SentTime = <span style="color: #0000ff">true</span>;<br /> filter.ArrivedTime = <span style="color: #0000ff">true</span>;<br /> filter.Id = <span style="color: #0000ff">true</span>;<br /> filter.CorrelationId = <span style="color: #0000ff">true</span>;<br /> filter.SourceMachine = <span style="color: #0000ff">true</span>;<br /> <span style="color: #0000ff">return</span> filter;<br /> }<br />}</pre>
<br /></div>
<p>And now, the ProcessLog class:</p>
<div id="codeSnippetWrapper">
<pre id="codeSnippet" style="border-top-style: none; overflow: visible; font-size: 10pt; font-family: 'Courier New', courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #e8d8b7"><span style="color: #0000ff">public</span> <span style="color: #0000ff">class</span> ProcessLog<br />{<br /> <span style="color: #0000ff">private</span> Thread ProcessThread;<br /> <span style="color: #0000ff">private</span> <span style="color: #0000ff">bool</span> EndLoop = <span style="color: #0000ff">false</span>;<br /> <span style="color: #0000ff">private</span> <span style="color: #0000ff">bool</span> IsStarted = <span style="color: #0000ff">false</span>;<br /> <span style="color: #0000ff">private</span> MessageQueue ProcessQueue;<br /> <span style="color: #0000ff">private</span> <span style="color: #0000ff">string</span> QueueName;<br /> <span style="color: #0000ff">private</span> TimeSpan TimeoutInterval = TimeSpan.FromMilliseconds(1000);<br /> <br /> <span style="color: #0000ff">public</span> ProcessLog()<br /> {<br /> ThreadStart threadStart = <span style="color: #0000ff">new</span> ThreadStart(RunThread);<br /> <span style="color: #0000ff">this</span>.ProcessThread = <span style="color: #0000ff">new</span> Thread(threadStart);<br /> }<br /> <br /> <span style="color: #008000">// Public Methods</span><br /> <span style="color: #0000ff">public</span> <span style="color: #0000ff">virtual</span> <span style="color: #0000ff">void</span> Start()<br /> {<br /> <span style="color: #0000ff">if</span> (!<span style="color: #0000ff">this</span>.IsStarted)<br /> {<br /> QueueName = OutputLog.QueueName;<br /> <span style="color: #0000ff">if</span> (!MessageQueue.Exists(QueueName))<br /> {<br /> MessageQueue.Create(QueueName, <span style="color: #0000ff">true</span>);<br /> }<br /> ProcessQueue = <span style="color: #0000ff">new</span> MessageQueue(<span style="color: #006080">"FormatName:DIRECT=OS:"</span> + QueueName);<br /> ProcessQueue.Formatter = <span style="color: #0000ff">new</span> XmlMessageFormatter(<span style="color: #0000ff">new</span> Type[] { <span style="color: #0000ff">typeof</span>(DataLog) });<br /> ProcessQueue.MessageReadPropertyFilter = SettingsForQueue.SetPropertyFilter();<br /> <span style="color: #0000ff">this</span>.ProcessThread.Start();<br /> }<br /> <span style="color: #0000ff">this</span>.IsStarted = <span style="color: #0000ff">true</span>;<br /> }<br /> <span style="color: #0000ff">public</span> <span style="color: #0000ff">virtual</span> <span style="color: #0000ff">void</span> Stop()<br /> {<br /> <span style="color: #0000ff">this</span>.EndLoop = <span style="color: #0000ff">true</span>;<br /> <span style="color: #0000ff">this</span>.IsStarted = <span style="color: #0000ff">false</span>;<br /> }<br /> <br /> <span style="color: #008000">// Private Methods</span><br /> <span style="color: #0000ff">private</span> <span style="color: #0000ff">void</span> RunThread()<br /> {<br /> <span style="color: #0000ff">while</span> (!<span style="color: #0000ff">this</span>.EndLoop)<br /> {<br /> Thread.Sleep(500); <span style="color: #008000">// sleep 500 milliseconds, so the CPU doesn't churn constantly</span><br /> <br /> <span style="color: #008000">// And now we'll do the work</span><br /> <span style="color: #0000ff">try</span><br /> {<br /> <span style="color: #008000">// see my blog post about creating a Utility class to make this less messy:</span><br /> <span style="color: #008000">// http://geek-goddess-bonnie.blogspot.com/2010/12/transactionscope-and-sqlserver.html</span><br /> <span style="color: #008000">// If you already have a Utility class, add a static GetTransactionScope() method with these settings:</span><br /> <span style="color: #008000">// (TransactionScopeOption.Required, new TransactionOptions() { IsolationLevel = IsolationLevel.ReadCommitted }))</span><br /> <span style="color: #0000ff">using</span> (TransactionScope scope = <span style="color: #0000ff">new</span> TransactionScope()) <span style="color: #008000">// you really want to use some options, like above</span><br /> {<br /> <span style="color: #0000ff">try</span><br /> {<br /> System.Messaging.Message msg = ProcessQueue.Receive(TimeoutInterval, MessageQueueTransactionType.Automatic);<br /> DataLog data = (DataLog)msg.Body;<br /> <span style="color: #0000ff">if</span> (<span style="color: #0000ff">this</span>.Save(data))<br /> scope.Complete();<br /> <span style="color: #0000ff">else</span><br /> {<br /> Thread.Sleep(1000);<br /> }<br /> }<br /> <span style="color: #0000ff">catch</span> (MessageQueueException ex)<br /> {<br /> <span style="color: #0000ff">if</span> (ex.MessageQueueErrorCode != MessageQueueErrorCode.IOTimeout)<br /> Console.WriteLine(ex.MessageQueueErrorCode + <span style="color: #006080">": "</span> + ex.Message);<br /> }<br /> <span style="color: #0000ff">catch</span> (Exception ex)<br /> {<br /> Console.WriteLine(ex.Message);<br /> }<br /> }<br /> }<br /> <span style="color: #0000ff">catch</span> (Exception ex)<br /> {<br /> Console.WriteLine(ex.Message);<br /> }<br /> }<br /> }<br /> <span style="color: #0000ff">private</span> <span style="color: #0000ff">bool</span> Save(DataLog data)<br /> {<br /> <span style="color: #008000">// For the purposes of illustrating how this works, I'll *not* actually write to a database,</span><br /> <span style="color: #008000">// but the database code is here, commented, if you want to use it</span><br /> <br /> Console.WriteLine($<span style="color: #006080">"{data.Message}"</span>);<br /> <span style="color: #0000ff">if</span> (<span style="color: #0000ff">string</span>.IsNullOrWhiteSpace(data.Category))<br /> Console.WriteLine($<span style="color: #006080">"{data.LogTime}"</span>);<br /> <span style="color: #0000ff">else</span><br /> Console.WriteLine($<span style="color: #006080">"{data.LogTime} \t {data.Category}"</span>);<br /> <span style="color: #0000ff">return</span> <span style="color: #0000ff">true</span>;<br /> <br /> <span style="color: #008000">//try</span><br /> <span style="color: #008000">//{</span><br /> <span style="color: #008000">// using (SqlConnection Connection = new SqlConnection(LogOutput.TrackingConnectionString))</span><br /> <span style="color: #008000">// {</span><br /> <span style="color: #008000">// SqlCommand Command = new SqlCommand();</span><br /> <span style="color: #008000">// Command.Connection = Connection;</span><br /> <span style="color: #008000">// Command.CommandType = CommandType.StoredProcedure;</span><br /> <span style="color: #008000">// Command.CommandText = "usp_logdataput"; // write your own Stored Proc or simply use an INSERT INTO with parameters</span><br /> <span style="color: #008000">// Command.Parameters.AddWithValue("@logdatetime", data.LogTime);</span><br /> <span style="color: #008000">// Command.Parameters.AddWithValue("@message", data.Message);</span><br /> <span style="color: #008000">// Command.Parameters.AddWithValue("@category", data.Category);</span><br /> <span style="color: #008000">// Command.Parameters.AddWithValue("@machine", Environment.MachineName);</span><br /> <span style="color: #008000">// Connection.Open();</span><br /> <span style="color: #008000">// Command.ExecuteNonQuery();</span><br /> <span style="color: #008000">// return true;</span><br /> <span style="color: #008000">// }</span><br /> <span style="color: #008000">//}</span><br /> <span style="color: #008000">//catch (Exception ex)</span><br /> <span style="color: #008000">//{</span><br /> <span style="color: #008000">// Console.WriteLine(ex.Message);</span><br /> <span style="color: #008000">// Thread.Sleep(30000);</span><br /> <span style="color: #008000">// return false;</span><br /> <span style="color: #008000">//}</span><br /> }<br />}</pre>
<br /></div>
<p>OK, so now how do run this process? As mentioned in the comments in the code for the ProcessLog class, I'm not going to actually write to the database in this example. However, if you look at the OutputLog class, you'll see that the LoggingConnectionString property needs to be set, since it's in that property's setter that the Queue is created and configured. So, here's how we get the thing started:</p>
<div id="codeSnippetWrapper">
<pre id="codeSnippet" style="border-top-style: none; overflow: visible; font-size: 10pt; font-family: 'Courier New', courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #e8d8b7"><br />OutputLog.LoggingConnectionString = <span style="color: #006080">""</span>;<br /> <br /><span style="color: #008000">// Again, for illustration purposes, I will simply be spinning off a thread, that will always be running</span><br /><span style="color: #008000">// The thread's purpose is to simply read data off the Queue and write the data to the database</span><br /><span style="color: #008000">// In reality, my own Windows Service application has many "processor" threads that process data coming from many places</span><br /> <br />ProcessLog processLog = <span style="color: #0000ff">new</span> ProcessLog();<br />processLog.Start();<br /> <br /><span style="color: #008000">// OK, now that the thread has started, we've got to give it something to do.</span><br /><span style="color: #008000">// Let's test it by logging some messages</span><br /><span style="color: #0000ff">for</span> (<span style="color: #0000ff">int</span> i = 0; i < 100; i++)<br />{<br /> OutputLog.WriteLog(<span style="color: #006080">"This is Message #"</span> + i);<br />}</pre>
<br /></div>
<p> </p>
<p>Those messages are getting written to the MSMQ queue by the OutputLog class.</p>
<p>Then the processLog thread that we just started pops them off the queue and displays them in the Console window. </p>
<p> </p>
<div id="codeSnippetWrapper">
<pre id="codeSnippet" style="border-top-style: none; overflow: visible; font-size: 10pt; font-family: 'Courier New', courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #e8d8b7"><span style="color: #008000">// Hit Any Key to stop, after you've seen all the messages displayed</span><br />Console.ReadKey();<br />processLog.Stop();</pre>
<br /></div>
<p>You can take a look and see them in the MSMQ queue in Message Queuing | Private Queues from the Computer Management application (run compmgmt from another command window, or a right-click on the Start, which should have it). If you look before they are all processed, you'll see how many remain in the queue (and you can refresh the queue, to see them disappearing as they are popped off), as you can see from this screenshot:</p>
<div class="separator" style="clear: both;"><a href="https://1.bp.blogspot.com/-xQ2QuEhduz8/X4n6y4GRbLI/AAAAAAAAAVw/_B2drk1VZIUrGbj4Kjp8O6oOESBla8-PACLcBGAsYHQ/s0/CompMgmt.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" data-original-height="627" data-original-width="1052" src="https://1.bp.blogspot.com/-xQ2QuEhduz8/X4n6y4GRbLI/AAAAAAAAAVw/_B2drk1VZIUrGbj4Kjp8O6oOESBla8-PACLcBGAsYHQ/s0/CompMgmt.png"/></a></div>
<p>You can also see how they stay in the queue waiting to be delivered if you stop the process before they are all displayed! Of course, after you restart it, you'll get 100 more messages dumped in the queue. Do it enough times, without letting them all get processed, and you'll start to have a lot of messages in that queue. Not a problem, you can simply right-click on the "Queue messages", under your Queue and choose "All Tasks | Purge", as shown in this screenshot:</p>
<div class="separator" style="clear: both;"><a href="https://1.bp.blogspot.com/-UGtBCXvbluU/X4n6y-TRiRI/AAAAAAAAAVo/QqrlgW7HQScSpd7LGkpPKYXjcgV3X_9awCLcBGAsYHQ/s0/CompMgmtPurge.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" data-original-height="347" data-original-width="1035" src="https://1.bp.blogspot.com/-UGtBCXvbluU/X4n6y-TRiRI/AAAAAAAAAVo/QqrlgW7HQScSpd7LGkpPKYXjcgV3X_9awCLcBGAsYHQ/s0/CompMgmtPurge.png"/></a></div>
<p>Even though this thread is running constantly in a while loop, you can see from the screenshot below, that it's barely taking up any CPU cycles (less than 1% ... it varied, but never much more than what you see here). This is because we sleep the thread for 500 milliseconds in between each loop iteration. It doesn't have to be 500 milliseconds ... longer or shorter is fine ... but you *do* need to have a brief sleep, otherwise CPU usage would shoot up and you'd also have a tough time stopping the loop gracefully.</p>
<div class="separator" style="clear: both;"><a href="https://1.bp.blogspot.com/-9gKfE_0GWWs/X4n6y6w9pCI/AAAAAAAAAVs/kZC9DmpUqyUightxxyLFF9GeeYEhnm16wCLcBGAsYHQ/s0/TaskManager.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" data-original-height="363" data-original-width="869" src="https://1.bp.blogspot.com/-9gKfE_0GWWs/X4n6y6w9pCI/AAAAAAAAAVs/kZC9DmpUqyUightxxyLFF9GeeYEhnm16wCLcBGAsYHQ/s0/TaskManager.png"/></a></div>
<p>There is one more topic to cover and that is Distributed Transactions. Both MSMQ and SQL Server are transactional in this scenario, and consequently once you actually throw SQL Server into the mix (which you can see, I've skillfully avoided in this example), the Transactions get elevated to distributed transactions and you can run into DTC issues, unless you've already configured DTC (Distributed Transaction Controller) to properly allow for distributed transactions. I just so happen to have a blog post about this, which should be useful:</p>
<p><a href="https://geek-goddess-bonnie.blogspot.com/2020/10/configure-msdtc-for-distributed.html" target="_blank">https://geek-goddess-bonnie.blogspot.com/2020/10/configure-msdtc-for-distributed.html</a></p>
<p>Happy Coding!!   =0)</p>Bonniehttp://www.blogger.com/profile/11241425687786973525noreply@blogger.com0tag:blogger.com,1999:blog-33753991.post-27919663759508301572020-10-10T16:27:00.002-07:002021-01-30T15:35:34.674-08:00Configure MSDTC for Distributed TransactionsMany years ago, I needed to figure out how to enable and configure MSDTC (Distributed Transaction Coordinator). I had Googled, but almost everything I found seemed to leave out some of the necessary (and important) steps.<div><br /></div><div>That is, until I came upon a blog by a woman named <b>Irina Tudose</b>, who went by "<b>yrushka</b>" on several technical forums. She did <b>*not* </b>leave out any steps! I included a link to her blog post in one of my own blog posts, because it made sense for me to not "reinvent the wheel" when she had already done it so well! I have even given out the URL to her blog post to other people that I've worked with when they needed to set up MSDTC. <b>I'd really like to thank her!!</b></div><div><br /></div><div>But today, while I was in the midst of writing a different blog post (which will be published soon), I realized that I needed again to include a link to Irina's blog. Unfortunately, it is gone (or hijacked) and the URL gets redirected to another other site (that MalwareBytes tells me is fraudulent).</div><div><br /></div><div>Luckily, a little over 2 years ago, I had used EverNote to "clip" the entire page about DTC (and not clip the link) for just this reason! In case Irina's blog ever disappeared. I hope that she doesn't mind if I recreate it here (and, Irina, if you happen to find <b>*my*</b> blog, please let me know if you have moved your site elsewhere)!</div><div><br /></div>
<b><span style="color: red;">UPDATE (01/30/2021)</span></b>: I recently remembered the Wayback Machine, and looked up Irina's post there. And I found it. You can look at the original from Irina, instead of continuing with mine, if you prefer (or heck, read them both)!!
<br/><a href="https://web.archive.org/web/20160615025531/http://yrushka.com/index.php/sql-server/security/configure-msdtc-for-distributed-transactions/" target="_blank">https://web.archive.org/web/20160615025531/http://yrushka.com/index.php/sql-server/security/configure-msdtc-for-distributed-transactions/</a>
<div><br /></div>
<div><span style="background-clip: border-box; background-origin: padding-box; background-position: 0% 0%; background-size: auto; border-color: rgb(126, 34, 23); border-radius: 0px; border-spacing: 0px; border-width: 0px; box-shadow: none; caption-side: top; clip: auto; color: #FF9F55; content: normal; counter-increment: none; counter-reset: none; cursor: auto; direction: ltr; empty-cells: show; font-family: Calibri; font-size: 18px; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 700; line-height: 18px; list-style: outside none disc; opacity: 1; outline: transparent none 0px; pointer-events: visiblepainted; table-layout: auto; text-align: right; text-anchor: start; text-shadow: none; vertical-align: baseline; visibility: visible; z-index: auto;">Here is Irina's post, in its entirety:</span></div>
<div><br /></div>
<div style="background-clip: border-box; background-origin: padding-box; background-position: 0% 0%; background-size: auto; border-color: rgb(51, 51, 51); border-radius: 0px; border-spacing: 0px; border-width: 0px; box-shadow: none; caption-side: top; clip: auto; content: normal; counter-increment: none; counter-reset: none; cursor: auto; direction: ltr; empty-cells: show; float: none; font-size: 13px; list-style: outside none disc; margin-bottom: 18px; opacity: 1; outline: transparent none 0px; pointer-events: visiblepainted; table-layout: auto; text-anchor: start; text-shadow: none; vertical-align: baseline; visibility: visible; width: 760px; z-index: auto;"><div><span style="color: #333333; font-family: Tahoma, Arial, Helvetica, sans-serif; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: 18px;">Few days ago, inside a Software project, I had to enable and configure MSDTC (Distributed Transaction Coordinator) between 2 machines: a Web Server using NServiceBus to process messages in a transaction and a SQL Server.</span></div><div><span style="color: #333333; font-family: Tahoma, Arial, Helvetica, sans-serif; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: 18px;">I encountered some issues and I would like to detail the order of few configuration steps as well as testing methods that should be done/checked before MSDTC in fully functional.</span></div></div><div style="background-clip: border-box; background-origin: padding-box; background-position: 0% 0%; background-size: auto; border-color: rgb(51, 51, 51); border-radius: 0px; border-spacing: 0px; border-width: 0px; box-shadow: none; caption-side: top; clip: auto; content: normal; counter-increment: none; counter-reset: none; cursor: auto; direction: ltr; empty-cells: show; float: none; font-size: 13px; list-style: outside none disc; margin-bottom: 18px; opacity: 1; outline: transparent none 0px; pointer-events: visiblepainted; table-layout: auto; text-anchor: start; text-shadow: none; vertical-align: baseline; visibility: visible; width: 760px; z-index: auto;"><span style="color: #333333; font-family: Tahoma, Arial, Helvetica, sans-serif; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: 18px;"> </span></div><div><span style="background-clip: border-box; background-origin: padding-box; background-position: 0% 0%; background-size: auto; border-color: rgb(126, 34, 23); border-radius: 0px; border-spacing: 0px; border-width: 0px; box-shadow: none; caption-side: top; clip: auto; color: #7e2217; content: normal; counter-increment: none; counter-reset: none; cursor: auto; direction: ltr; empty-cells: show; font-family: Calibri; font-size: 18px; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 700; line-height: 18px; list-style: outside none disc; opacity: 1; outline: transparent none 0px; pointer-events: visiblepainted; table-layout: auto; text-align: right; text-anchor: start; text-shadow: none; vertical-align: baseline; visibility: visible; z-index: auto;">Step 1: Network connectivity</span></div><div style="background-clip: border-box; background-origin: padding-box; background-position: 0% 0%; background-size: auto; border-color: rgb(51, 51, 51); border-radius: 0px; border-spacing: 0px; border-width: 0px; box-shadow: none; caption-side: top; clip: auto; content: normal; counter-increment: none; counter-reset: none; cursor: auto; direction: ltr; empty-cells: show; float: none; font-size: 13px; list-style: outside none disc; margin-bottom: 18px; opacity: 1; outline: transparent none 0px; pointer-events: visiblepainted; table-layout: auto; text-anchor: start; text-shadow: none; vertical-align: baseline; visibility: visible; width: 760px; z-index: auto;"><span style="color: #333333; font-family: Tahoma, Arial, Helvetica, sans-serif; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: 18px;"><br>Make sure both servers can ping each other by the machine name, cause MSDTC uses netBIOS to establish a connection.</span></div><div style="background-clip: border-box; background-origin: padding-box; background-position: 0% 0%; background-size: auto; border-color: rgb(51, 51, 51); border-radius: 0px; border-spacing: 0px; border-width: 0px; box-shadow: none; caption-side: top; clip: auto; content: normal; counter-increment: none; counter-reset: none; cursor: auto; direction: ltr; empty-cells: show; float: none; font-size: 13px; list-style: outside none disc; margin-bottom: 18px; opacity: 1; outline: transparent none 0px; pointer-events: visiblepainted; table-layout: auto; text-anchor: start; text-shadow: none; vertical-align: baseline; visibility: visible; width: 760px; z-index: auto;"><span style="color: #333333; font-family: Tahoma, Arial, Helvetica, sans-serif; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: 18px;">Start a command prompt window and execute on both servers:</span></div><div class="gUnordList"><div class="gListItem"><span style="background-clip: border-box; background-origin: padding-box; background-position: 0% 0%; background-size: auto; border-color: rgb(51, 51, 51); border-radius: 0px; border-spacing: 0px; border-width: 0px; box-shadow: none; caption-side: top; clip: auto; color: #333333; content: normal; counter-increment: none; counter-reset: none; cursor: auto; direction: ltr; empty-cells: show; font-family: Tahoma, Arial, Helvetica, sans-serif; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: 18px; list-style: outside none disc; opacity: 1; outline: transparent none 0px; pointer-events: visiblepainted; table-layout: auto; text-anchor: start; text-shadow: none; vertical-align: baseline; visibility: visible; z-index: auto;">ping</span> <span style="color: #333333; font-family: Tahoma, Arial, Helvetica, sans-serif; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: 18px;">[SERVER_NAME1]</span></div><div class="gListItem"><span style="background-clip: border-box; background-origin: padding-box; background-position: 0% 0%; background-size: auto; border-color: rgb(51, 51, 51); border-radius: 0px; border-spacing: 0px; border-width: 0px; box-shadow: none; caption-side: top; clip: auto; color: #333333; content: normal; counter-increment: none; counter-reset: none; cursor: auto; direction: ltr; empty-cells: show; font-family: Tahoma, Arial, Helvetica, sans-serif; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: 18px; list-style: outside none disc; opacity: 1; outline: transparent none 0px; pointer-events: visiblepainted; table-layout: auto; text-anchor: start; text-shadow: none; vertical-align: baseline; visibility: visible; z-index: auto;">ping</span> <span style="color: #333333; font-family: Tahoma, Arial, Helvetica, sans-serif; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: 18px;">[SERVER_NAME2]</span></div></div><p style="background-clip: border-box; background-origin: padding-box; background-position: 0% 0%; background-size: auto; border-color: rgb(51, 51, 51); border-radius: 0px; border-spacing: 0px; border-width: 0px; box-shadow: none; caption-side: top; clip: auto; color: #333333; content: normal; counter-increment: none; counter-reset: none; cursor: auto; direction: ltr; empty-cells: show; float: none; font-family: Tahoma, Arial, Helvetica, sans-serif; font-size: 13px; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: 18px; list-style: outside none disc; margin-bottom: 18px; opacity: 1; outline: transparent none 0px; pointer-events: visiblepainted; table-layout: auto; text-anchor: start; text-shadow: none; vertical-align: baseline; visibility: visible; width: 760px; z-index: auto;"></p><div><span style="background-clip: border-box; background-origin: padding-box; background-position: 0% 0%; background-size: auto; border-color: rgb(126, 34, 23); border-radius: 0px; border-spacing: 0px; border-width: 0px; box-shadow: none; caption-side: top; clip: auto; color: #7e2217; content: normal; counter-increment: none; counter-reset: none; cursor: auto; direction: ltr; empty-cells: show; font-family: Calibri; font-size: 18px; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 700; line-height: 18px; list-style: outside none disc; opacity: 1; outline: transparent none 0px; pointer-events: visiblepainted; table-layout: auto; text-align: right; text-anchor: start; text-shadow: none; vertical-align: baseline; visibility: visible; z-index: auto;">Step 2: Enable MSDTC on both servers.</span></div><div style="background-clip: border-box; background-origin: padding-box; background-position: 0% 0%; background-size: auto; border-color: rgb(51, 51, 51); border-radius: 0px; border-spacing: 0px; border-width: 0px; box-shadow: none; caption-side: top; clip: auto; content: normal; counter-increment: none; counter-reset: none; cursor: auto; direction: ltr; empty-cells: show; float: none; font-size: 13px; list-style: outside none disc; margin-bottom: 18px; opacity: 1; outline: transparent none 0px; pointer-events: visiblepainted; table-layout: auto; text-anchor: start; text-shadow: none; vertical-align: baseline; visibility: visible; width: 760px; z-index: auto;"><span style="color: #333333; font-family: Tahoma, Arial, Helvetica, sans-serif; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: 18px;"><br>There are pictures for Windows 2008 Server and Windows 2003 Server because MSDTC location is changed from one WIndows edition to another. The options to check are the same though.</span></div>
<ol style="background-clip: border-box; background-origin: padding-box; background-position: 0% 0%; background-size: auto; border-color: rgb(51, 51, 51); border-radius: 0px; border-spacing: 0px; border-width: 0px; box-shadow: none; caption-side: top; clip: auto; content: normal; counter-increment: none; counter-reset: none; cursor: auto; direction: ltr; empty-cells: show; float: none; font-size: 13px; list-style-image: none; list-style-position: outside; margin-bottom: 18px; margin-left: 30px; margin-right: 30px; opacity: 1; outline: transparent none 0px; pointer-events: visiblepainted; table-layout: auto; text-anchor: start; text-shadow: none; vertical-align: baseline; visibility: visible; width: 700px; z-index: auto;">
<li style="background-clip: border-box; background-origin: padding-box; background-position: 0% 0%; background-size: auto; border-color: rgb(51, 51, 51); border-radius: 0px; border-spacing: 0px; border-width: 0px; box-shadow: none; caption-side: top; clip: auto; content: normal; counter-increment: none; counter-reset: none; cursor: auto; direction: ltr; empty-cells: show; float: none; list-style: outside none decimal; opacity: 1; outline: transparent none 0px; pointer-events: visiblepainted; table-layout: auto; text-anchor: start; text-shadow: none; vertical-align: baseline; visibility: visible; width: 700px; z-index: auto;">
<span style="background-clip: border-box; background-origin: padding-box; background-position: 0% 0%; background-size: auto; border-color: rgb(34, 34, 34); border-radius: 0px; border-spacing: 0px; border-width: 0px; box-shadow: none; caption-side: top; clip: auto; color: #222222; content: normal; counter-increment: none; counter-reset: none; cursor: auto; direction: ltr; empty-cells: show; font-family: Calibri; font-size: 16px; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 700; line-height: 18px; list-style: outside none decimal; opacity: 1; outline: transparent none 0px; pointer-events: visiblepainted; table-layout: auto; text-align: right; text-anchor: start; text-shadow: none; vertical-align: baseline; visibility: visible; z-index: auto;">Open Component Services:</span></li>
<img alt="Component Services" height="241" src="data:image/png;base64,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"
style="background-clip: border-box; background-color: white; background-origin: padding-box; background-position: 0% 0%; background-size: auto; border-color: rgb(221, 221, 221); border-radius: 0px; border-spacing: 0px; border-style: solid; border-width: 1px; box-shadow: none; caption-side: top; clear: both; clip: auto; content: normal; counter-increment: none; counter-reset: none; cursor: auto; direction: ltr; display: block; empty-cells: show; float: none; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: 18px; list-style: outside none decimal; margin: 10px 195px; max-width: 610px; opacity: 1; outline: transparent none 0px; padding: 4px; pointer-events: visiblepainted; table-layout: auto; text-anchor: start; text-shadow: none; vertical-align: baseline; visibility: visible; width: 300px; z-index: auto;" title="Component Services" width="300" />
<li style="background-clip: border-box; background-origin: padding-box; background-position: 0% 0%; background-size: auto; border-color: rgb(51, 51, 51); border-radius: 0px; border-spacing: 0px; border-width: 0px; box-shadow: none; caption-side: top; clip: auto; content: normal; counter-increment: none; counter-reset: none; cursor: auto; direction: ltr; empty-cells: show; float: none; list-style: outside none decimal; opacity: 1; outline: transparent none 0px; pointer-events: visiblepainted; table-layout: auto; text-anchor: start; text-shadow: none; vertical-align: baseline; visibility: visible; width: 700px; z-index: auto;">
<span style="background-clip: border-box; background-origin: padding-box; background-position: 0% 0%; background-size: auto; border-color: rgb(34, 34, 34); border-radius: 0px; border-spacing: 0px; border-width: 0px; box-shadow: none; caption-side: top; clip: auto; color: #222222; content: normal; counter-increment: none; counter-reset: none; cursor: auto; direction: ltr; empty-cells: show; font-family: Calibri; font-size: 16px; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 700; line-height: 18px; list-style: outside none decimal; opacity: 1; outline: transparent none 0px; pointer-events: visiblepainted; table-layout: auto; text-align: right; text-anchor: start; text-shadow: none; vertical-align: baseline; visibility: visible; z-index: auto;">Access DTC Properties</span></li>
<div><span style="background-clip: border-box; background-color: white; background-origin: padding-box; background-position: 0% 0%; background-size: auto; border-color: rgb(221, 221, 221); border-radius: 3px; border-spacing: 0px; border-style: solid; border-width: 1px; box-shadow: none; caption-side: top; clip: auto; content: normal; counter-increment: none; counter-reset: none; cursor: auto; direction: ltr; empty-cells: show; float: left; list-style: outside none decimal; margin-bottom: 10px; margin-right: 10px; margin-top: 10px; opacity: 1; outline: transparent none 0px; padding: 4px; pointer-events: visiblepainted; table-layout: auto; text-align: center; text-anchor: start; text-shadow: none; vertical-align: baseline; visibility: visible; width: 310px; z-index: auto;"><span style="background-clip: border-box; background-origin: padding-box; background-position: 0% 0%; background-size: auto; border-color: rgb(51, 51, 51); border-radius: 0px; border-spacing: 0px; border-width: 0px; box-shadow: none; caption-side: top; clip: auto; color: #333333; content: normal; counter-increment: none; counter-reset: none; cursor: auto; direction: ltr; empty-cells: show; font-family: Tahoma, Arial, Helvetica, sans-serif; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: normal; list-style: outside none decimal; opacity: 1; outline: transparent none 0px; pointer-events: visiblepainted; table-layout: auto; text-anchor: start; text-decoration-line: underline; text-shadow: none; vertical-align: baseline; visibility: visible; z-index: auto;">
<img alt="Windows 2003 - MSDTC location" height="208" src="data:image/png;base64,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" style="background-clip: border-box; background-origin: padding-box; background-position: 0% 0%; background-size: auto; border-color: rgb(221, 221, 221); border-radius: 0px; border-spacing: 0px; border-style: solid; border-width: 1px; box-shadow: none; caption-side: top; clip: auto; content: normal; counter-increment: none; counter-reset: none; cursor: auto; direction: ltr; display: inline; empty-cells: show; float: none; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: normal; list-style: outside none decimal; max-width: 610px; opacity: 1; outline: transparent none 0px; pointer-events: visiblepainted; table-layout: auto; text-anchor: start; text-shadow: none; vertical-align: baseline; visibility: visible; width: 300px; z-index: auto;" title="Windows 2003 - MSDTC location" width="300" /></span></span></div>
<div><span style="background-clip: border-box; background-color: white; background-origin: padding-box; background-position: 0% 0%; background-size: auto; border-color: rgb(221, 221, 221); border-radius: 3px; border-spacing: 0px; border-style: solid; border-width: 1px; box-shadow: none; caption-side: top; clip: auto; content: normal; counter-increment: none; counter-reset: none; cursor: auto; direction: ltr; empty-cells: show; float: right; list-style: outside none decimal; margin-bottom: 10px; margin-left: 10px; margin-top: 10px; opacity: 1; outline: transparent none 0px; padding: 4px; pointer-events: visiblepainted; table-layout: auto; text-align: center; text-anchor: start; text-shadow: none; vertical-align: baseline; visibility: visible; width: 289px; z-index: auto;"><span style="background-clip: border-box; background-origin: padding-box; background-position: 0% 0%; background-size: auto; border-color: rgb(51, 51, 51); border-radius: 0px; border-spacing: 0px; border-width: 0px; box-shadow: none; caption-side: top; clip: auto; color: #333333; content: normal; counter-increment: none; counter-reset: none; cursor: auto; direction: ltr; empty-cells: show; font-family: Tahoma, Arial, Helvetica, sans-serif; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: normal; list-style: outside none decimal; opacity: 1; outline: transparent none 0px; pointer-events: visiblepainted; table-layout: auto; text-anchor: start; text-decoration-line: underline; text-shadow: none; vertical-align: baseline; visibility: visible; z-index: auto;">
<img alt="Windows 2003 - MSDTC location" height="300" src="data:image/jpeg;base64,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" style="background-clip: border-box; background-origin: padding-box; background-position: 0% 0%; background-size: auto; border-color: rgb(221, 221, 221); border-radius: 0px; border-spacing: 0px; border-style: solid; border-width: 1px; box-shadow: none; caption-side: top; clip: auto; content: normal; counter-increment: none; counter-reset: none; cursor: auto; direction: ltr; display: inline; empty-cells: show; float: center; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: normal; list-style: outside none decimal; max-width: 610px; opacity: 1; outline: transparent none 0px; pointer-events: visiblepainted; table-layout: auto; text-anchor: start; text-shadow: none; vertical-align: baseline; visibility: visible; width: 279px; z-index: auto;" title="Windows 2003 - MSDTC location" width="279" /></span></span></div>
<div style="background-clip: border-box; background-origin: padding-box; background-position: 0% 0%; background-size: auto; border-color: rgb(51, 51, 51); border-radius: 0px; border-spacing: 0px; border-width: 0px; box-shadow: none; caption-side: top; clip: auto; content: normal; counter-increment: none; counter-reset: none; cursor: auto; direction: ltr; empty-cells: show; float: none; font-size: 12px; list-style: outside none decimal; margin-bottom: 1em; margin-top: 1em; opacity: 1; outline: transparent none 0px; padding-top: 4px; pointer-events: visiblepainted; table-layout: auto; text-align: center; text-anchor: start; text-shadow: none; vertical-align: baseline; visibility: visible; width: 289px; z-index: auto;"><span style="background-color: white; color: #333333; font-family: Tahoma, Arial, Helvetica, sans-serif; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: 20px;">Windows 2003 - MSDTC location</span></div>
<div><span style="background-clip: border-box; background-color: white; background-origin: padding-box; bacground-position: 0% 0%; background-size: auto; border-color: rgb(221, 221, 221); border-radius: 3px; border-spacing: 0px; border-style: solid; border-width: 1px; box-shadow: none; caption-side: top; clip: auto; content: normal; counter-increment: none; counter-reset: none; cursor: auto; direction: ltr; empty-cells: show; float: left; list-style: outside none decimal; margin-bottom: 10px; margin-right: 10px; margin-top: 10px; opacity: 1; outline: transparent none 0px; padding: 4px; pointer-events: visiblepainted; table-layout: auto; text-align: center; text-anchor: start; text-shadow: none; vertical-align: baseline; visibility: visible; width: 310px; z-index: auto;"><img alt="Windows 2008 - MSDTC location" height="250" src="data:image/png;base64,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" style="background-clip: border-box; background-origin: padding-box; background-position: 0% 0%; background-size: auto; border-color: rgb(221, 221, 221); border-radius: 0px; border-spacing: 0px; border-style: solid; border-width: 1px; box-shadow: none; caption-side: top; clip: auto; content: normal; counter-increment: none; counter-reset: none; cursor: auto; direction: ltr; display: inline; empty-cells: show; float: none; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: normal; list-style: outside none decimal; max-width: 610px; opacity: 1; outline: transparent none 0px; pointer-events: visiblepainted; table-layout: auto; text-anchor: start; text-shadow: none; vertical-align: baseline; visibility: visible; width: 300px; z-index: auto;" title="Windows 2008 - MSDTC location" width="300" /></span></span></div>
<div style="background-clip: border-box; background-origin: padding-box; background-position: 0% 0%; background-size: auto; border-color: rgb(51, 51, 51); border-radius: 0px; border-spacing: 0px; border-width: 0px; box-shadow: none; caption-side: top; clip: auto; content: normal; counter-increment: none; counter-reset: none; cursor: auto; direction: ltr; empty-cells: show; float: none; font-size: 12px; list-style: outside none decimal; margin-bottom: 1em; margin-top: 1em; opacity: 1; outline: transparent none 0px; padding-top: 4px; pointer-events: visiblepainted; table-layout: auto; text-align: center; text-anchor: start; text-shadow: none; vertical-align: baseline; visibility: visible; width: 310px; z-index: auto;"><span style="background-color: white; color: #333333; font-family: Tahoma, Arial, Helvetica, sans-serif; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: 20px;">Windows 2008 - MSDTC location</span></div>
<div style="background-clip: border-box; background-origin: padding-box; background-position: 0% 0%; background-size: auto; border-color: rgb(51, 51, 51); border-radius: 0px; border-spacing: 0px; border-width: 0px; box-shadow: none; caption-side: top; clip: auto; content: normal; counter-increment: none; counter-reset: none; cursor: auto; direction: ltr; empty-cells: show; float: none; list-style: outside none decimal; margin-bottom: 18px; opacity: 1; outline: transparent none 0px; pointer-events: visiblepainted; table-layout: auto; text-anchor: start; text-shadow: none; vertical-align: baseline; visibility: visible; width: 700px; z-index: auto;">
<li style="background-clip: border-box; background-origin: padding-box; background-position: 0% 0%; background-size: auto; border-color: rgb(51, 51, 51); border-radius: 0px; border-spacing: 0px; border-width: 0px; box-shadow: none; caption-side: top; clip: auto; content: normal; counter-increment: none; counter-reset: none; cursor: auto; direction: ltr; empty-cells: show; float: none; list-style: outside none decimal; opacity: 1; outline: transparent none 0px; pointer-events: visiblepainted; table-layout: auto; text-anchor: start; text-shadow: none; vertical-align: baseline; visibility: visible; width: 700px; z-index: auto;"><div><span style="background-clip: border-box; background-origin: padding-box; background-position: 0% 0%; background-size: auto; border-color: rgb(34, 34, 34); border-radius: 0px; border-spacing: 0px; border-width: 0px; box-shadow: none; caption-side: top; clip: auto; color: #222222; content: normal; counter-increment: none; counter-reset: none; cursor: auto; direction: ltr; empty-cells: show; font-family: Calibri; font-size: 16px; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 700; line-height: 18px; list-style: outside none decimal; opacity: 1; outline: transparent none 0px; pointer-events: visiblepainted; table-layout: auto; text-align: right; text-anchor: start; text-shadow: none; vertical-align: baseline; visibility: visible; z-index: auto;">Enable MSDTC according to below options selected.</span></div><div><span style="color: #333333; font-family: Tahoma, Arial, Helvetica, sans-serif; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: 18px;">Check only the red check boxes and click Apply.</span></div></li>
<div style="background-clip: border-box; background-origin: padding-box; background-position: 0% 0%; background-size: auto; border-color: rgb(51, 51, 51); border-radius: 0px; border-spacing: 0px; border-width: 0px; box-shadow: none; caption-side: top; clip: auto; content: normal; counter-increment: none; counter-reset: none; cursor: auto; direction: ltr; empty-cells: show; float: none; list-style: outside none decimal; margin-bottom: 18px; opacity: 1; outline: transparent none 0px; pointer-events: visiblepainted; table-layout: auto; text-anchor: start; text-shadow: none; vertical-align: baseline; visibility: visible; width: 700px; z-index: auto;"><span style="background-clip: border-box; background-origin: padding-box; background-position: 0% 0%; background-size: auto; border-color: rgb(51, 51, 51); border-radius: 0px; border-spacing: 0px; border-width: 0px; box-shadow: none; caption-side: top; clip: auto; color: #333333; content: normal; counter-increment: none; counter-reset: none; cursor: auto; direction: ltr; empty-cells: show; font-family: Tahoma, Arial, Helvetica, sans-serif; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: 18px; list-style: outside none decimal; opacity: 1; outline: transparent none 0px; pointer-events: visiblepainted; table-layout: auto; text-anchor: start; text-decoration-line: underline; text-shadow: none; vertical-align: baseline; visibility: visible; z-index: auto;">
<img alt="Windows 2008 - MSDTC properties" height="212" src="data:image/png;base64,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39+P7vC2wYkTJ9DW1oalS5dG46vnwcDAAHp6epLyUnOpavPX9acmJzDQ38eMRS+vmZlpTE1NFXleIka00dEc078nyHMlbDo8J8OY86d4aD2FqSLvWBYb/NTkFM9RRf4llRiWZumUVWd9GFs36QuWReiCNukyuQZyrmRqoFLtWBfO5le1XQUmqYmTOrZ6WxmNpEobgR7cLCaYHMd1nPPoO38BkxOTAkqCRywLcOqDgEF2eOLde/UgZSgLQL557gA9u5xzIWAdmBuDGrmDYVLzeZG+/OUvw3uP7du3Y2xsDE8++SSGh4fZjt/61rewf/9+vPvuuzh8+DA+/PBDvP766xgcHMSTTz6JqakpbN++Hc45bN++HX/zN3+Dvr4+vPTSSzh9+jS+8Y1voK+vD9/+9rexfft2TE5O4sknn8TQ0BCef/55TExM4M0338Sf/umf4uLFi9i1axf++I//GP39/XjppZdYz127duHYsWPc19T82b59OwDg9OnTePXVV/GTn/wkOa8pjY+PZ5m3PU5dy4UrlGI82slXXpSst99+D3/xv7+JN978B6HckV5xXhBbkudDGXmezK4Hz3OvLE/VA+Th1qhL6fBMzlaldwlzC7aey2ZTlZvYSHntpuVSFTBdzg6XizdV+dQ5HVI7tZYRU2aAY1LhDhCzHS5S1H/rp29jyeLFuO3WWzAxOYmmpia0tLRgfHwCHR3tzCSampowZ84czMxMw3uPWq2G13/4Bm7/1K2YN28emptbQK/vsAsq1Ix3WR141d8C52KBWRVdEIVvu+02PP/88wCAtWvXYv369di4cSOA4sHSxYsX47XXXsPmzZsjO95yyy14++230dPTg927d+PrX/86Tpw4AQD40pe+hOHhYUxMTODs2bPYs2cP1q1bhwsXLqC3txfr16/Hxz/+cdxwww348z//c9x22234wz/8Q2zfvh033HADxsbGMDBQuFPf+MY3cO7cOXR3d6OjowOvv/46gOLDfMuWLcPBgwexceNGvPjii1i9ejW++c1v4uGHH8bQ0BC3+Wd/9mdoaSmWTk9PDx544AG88sorAICpqSlMT09j06ZNeOedd7B8+XL8/u//fjSv9Dyqt96iaxCWk3oIUxi7Q//AAB64/z786I03cfToUYyOjmLo4kU414TurkXhI38t+PCjj3DhwgVsvuEGfHD8OIaGhnD/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" style="background-clip: border-box; background-color: white; background-origin: padding-box; background-position: 0% 0%; background-size: auto; border-color: rgb(221, 221, 221); border-radius: 0px; border-spacing: 0px; border-style: solid; border-width: 1px; box-shadow: none; caption-side: top; clip: auto; content: normal; counter-increment: none; counter-reset: none; cursor: auto; direction: ltr; display: inline; empty-cells: show; float: left; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: 18px; list-style: outside none decimal; margin-bottom: 10px; margin-right: 10px; margin-top: 10px; max-width: 610px; opacity: 1; outline: transparent none 0px; padding: 4px; pointer-events: visiblepainted; table-layout: auto; text-anchor: start; text-shadow: none; vertical-align: baseline; visibility: visible; width: 300px; z-index: auto;" title="Windows 2008 - MSDTC properties" width="300" /></span></div>
<div style="background-clip: border-box; background-origin: padding-box; background-position: 0% 0%; background-size: auto; border-color: rgb(51, 51, 51); border-radius: 0px; border-spacing: 0px; border-width: 0px; box-shadow: none; caption-side: top; clip: auto; content: normal; counter-increment: none; counter-reset: none; cursor: auto; direction: ltr; empty-cells: show; float: none; list-style: outside none decimal; margin-bottom: 18px; opacity: 1; outline: transparent none 0px; pointer-events: visiblepainted; table-layout: auto; text-anchor: start; text-shadow: none; vertical-align: baseline; visibility: visible; width: 700px; z-index: auto;"></div>
<div style="background-clip: border-box; background-origin: padding-box; background-position: 0% 0%; background-size: auto; border-color: rgb(51, 51, 51); border-radius: 0px; border-spacing: 0px; border-width: 0px; box-shadow: none; caption-side: top; clip: auto; content: normal; counter-increment: none; counter-reset: none; cursor: auto; direction: ltr; empty-cells: show; float: none; list-style: outside none decimal; margin-bottom: 18px; opacity: 1; outline: transparent none 0px; pointer-events: visiblepainted; table-layout: auto; text-anchor: start; text-shadow: none; vertical-align: baseline; visibility: visible; width: 700px; z-index: auto;">
</div>
<div><span style="color: #333333; font-family: Tahoma, Arial, Helvetica, sans-serif; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: 18px;"> </span></div><div><span style="color: #333333; font-family: Tahoma, Arial, Helvetica, sans-serif; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: 18px;"> </span></div><div><span style="color: #333333; font-family: Tahoma, Arial, Helvetica, sans-serif; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: 18px;"> </span></div><div><span style="color: #333333; font-family: Tahoma, Arial, Helvetica, sans-serif; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: 18px;"> </span></div><div><span style="color: #333333; font-family: Tahoma, Arial, Helvetica, sans-serif; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: 18px;"> </span></div><div><span style="color: #333333; font-family: Tahoma, Arial, Helvetica, sans-serif; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: 18px;"> </span></div><div><span style="color: #333333; font-family: Tahoma, Arial, Helvetica, sans-serif; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: 18px;"> </span></div><div><span style="color: #333333; font-family: Tahoma, Arial, Helvetica, sans-serif; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: 18px;"> </span></div><div><span style="color: #333333; font-family: Tahoma, Arial, Helvetica, sans-serif; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: 18px;"> </span></div><div><span style="color: #333333; font-family: Tahoma, Arial, Helvetica, sans-serif; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: 18px;"> </span></div><div><span style="color: #333333; font-family: Tahoma, Arial, Helvetica, sans-serif; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: 18px;"> </span></div>
<div style="background-clip: border-box; background-origin: padding-box; background-position: 0% 0%; background-size: auto; border-color: rgb(51, 51, 51); border-radius: 0px; border-spacing: 0px; border-width: 0px; box-shadow: none; caption-side: top; clip: auto; content: normal; counter-increment: none; counter-reset: none; cursor: auto; direction: ltr; empty-cells: show; float: none; list-style: outside none decimal; margin-bottom: 18px; opacity: 1; outline: transparent none 0px; pointer-events: visiblepainted; table-layout: auto; text-anchor: start; text-shadow: none; vertical-align: baseline; visibility: visible; width: 700px; z-index: auto;"><div><span style="color: #333333; font-family: Tahoma, Arial, Helvetica, sans-serif; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: 18px;">A warning message will be popped in to inform that the Distribution Transaction Coordinator Windows service will be started (or restarted).</span></div>
<div><span style="background-clip: border-box; background-origin: padding-box; background-position: 0% 0%; background-size: auto; border-color: rgb(51, 51, 51); border-radius: 0px; border-spacing: 0px; border-width: 0px; box-shadow: none; caption-side: top; clip: auto; color: #333333; content: normal; counter-increment: none; counter-reset: none; cursor: auto; direction: ltr; empty-cells: show; font-family: Tahoma, Arial, Helvetica, sans-serif; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: 18px; list-style: outside none decimal; opacity: 1; outline: transparent none 0px; pointer-events: visiblepainted; table-layout: auto; text-anchor: start; text-decoration-line: underline; text-shadow: none; vertical-align: baseline; visibility: visible; z-index: auto;">
<img alt="MSDTC restart" height="113" src="data:image/png;base64,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" style="background-clip: border-box; background-color: white; background-origin: padding-box; background-position: 0% 0%; background-size: auto; border-color: rgb(221, 221, 221); border-radius: 0px; border-spacing: 0px; border-style: solid; border-width: 1px; box-shadow: none; caption-side: top; clear: both; clip: auto; content: normal; counter-increment: none; counter-reset: none; cursor: auto; direction: ltr; display: block; empty-cells: show; float: none; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: 18px; list-style: outside none decimal; margin: 10px 195px; max-width: 610px; opacity: 1; outline: transparent none 0px; padding: 4px; pointer-events: visiblepainted; table-layout: auto; text-anchor: start; text-shadow: none; vertical-align: baseline; visibility: visible; width: 300px; z-index: auto;" title="MSDTC restart" width="300" /></span></div></div>
<li style="background-clip: border-box; background-origin: padding-box; background-position: 0% 0%; background-size: auto; border-color: rgb(51, 51, 51); border-radius: 0px; border-spacing: 0px; border-width: 0px; box-shadow: none; caption-side: top; clip: auto; content: normal; counter-increment: none; counter-reset: none; cursor: auto; direction: ltr; empty-cells: show; float: none; list-style: outside none decimal; opacity: 1; outline: transparent none 0px; pointer-events: visiblepainted; table-layout: auto; text-anchor: start; text-shadow: none; vertical-align: baseline; visibility: visible; width: 700px; z-index: auto;"><span style="background-clip: border-box; background-origin: padding-box; background-position: 0% 0%; background-size: auto; border-color: rgb(34, 34, 34); border-radius: 0px; border-spacing: 0px; border-width: 0px; box-shadow: none; caption-side: top; clip: auto; color: #222222; content: normal; counter-increment: none; counter-reset: none; cursor: auto; direction: ltr; empty-cells: show; font-family: Calibri; font-size: 16px; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 700; line-height: 18px; list-style: outside none decimal; opacity: 1; outline: transparent none 0px; pointer-events: visiblepainted; table-layout: auto; text-align: right; text-anchor: start; text-shadow: none; vertical-align: baseline; visibility: visible; z-index: auto;">Set the startup type of Distribution Transaction Coordinator Windows service to Automatic.</span></li></ol>
<div style="background-clip: border-box; background-origin: padding-box; background-position: 0% 0%; background-size: auto; border-color: rgb(51, 51, 51); border-radius: 0px; border-spacing: 0px; border-width: 0px; box-shadow: none; caption-side: top; clip: auto; content: normal; counter-increment: none; counter-reset: none; cursor: auto; direction: ltr; empty-cells: show; float: none; font-size: 13px; list-style: outside none disc; margin-bottom: 18px; opacity: 1; outline: transparent none 0px; pointer-events: visiblepainted; table-layout: auto; text-anchor: start; text-shadow: none; vertical-align: baseline; visibility: visible; width: 760px; z-index: auto;"><div><span style="color: #333333; font-family: Tahoma, Arial, Helvetica, sans-serif; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: 18px;">If you don’t have Firewalls that prohibit external access to machine’s ports than you can stop here with the MSDTC configuration.</span></div><div><span style="color: #333333; font-family: Tahoma, Arial, Helvetica, sans-serif; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: 18px;">MSDTC will function great with basic configuration (</span><span style="background-clip: border-box; background-origin: padding-box; background-position: 0% 0%; background-size: auto; border-color: rgb(51, 51, 51); border-radius: 0px; border-spacing: 0px; border-width: 0px; box-shadow: none; caption-side: top; clip: auto; color: #333333; content: normal; counter-increment: none; counter-reset: none; cursor: auto; direction: ltr; empty-cells: show; font-family: Tahoma, Arial, Helvetica, sans-serif; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: 18px; list-style: outside none disc; opacity: 1; outline: transparent none 0px; pointer-events: visiblepainted; table-layout: auto; text-anchor: start; text-shadow: none; vertical-align: baseline; visibility: visible; z-index: auto;">Step 1 & Step 2</span><span style="color: #333333; font-family: Tahoma, Arial, Helvetica, sans-serif; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: 18px;">) done only when there is no Firewall involved in network external communication. What do you do when there is a Firewall afterwards? In most Network configurations it is mandatory for securing the external access. If you follow all the steps detailed below, you should be able to make the MSDTC work without problems. Take a look at next steps.</span></div></div>
<div><span style="background-clip: border-box; background-origin: padding-box; background-position: 0% 0%; background-size: auto; border-color: rgb(126, 34, 23); border-radius: 0px; border-spacing: 0px; border-width: 0px; box-shadow: none; caption-side: top; clip: auto; color: #7e2217; content: normal; counter-increment: none; counter-reset: none; cursor: auto; direction: ltr; empty-cells: show; font-family: Calibri; font-size: 18px; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 700; line-height: 18px; list-style: outside none disc; opacity: 1; outline: transparent none 0px; pointer-events: visiblepainted; table-layout: auto; text-align: right; text-anchor: start; text-shadow: none; vertical-align: baseline; visibility: visible; z-index: auto;">Step 3: Restrict MSRPC dynamic port allocation.</span></div><div><span style="color: #333333; font-family: Tahoma, Arial, Helvetica, sans-serif; font-size: 13px; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: normal;"> </span></div><div><span style="color: #333333; font-family: Tahoma, Arial, Helvetica, sans-serif; font-size: 13px; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: normal;">MSDTC service depends on RPC protocol which stands in front of every Windows process that uses RPC. When you deal with MSDTC, you also have to consider the RPC access points. When MSRPC protocol is left with its default setting, all depending services including</span> <span style="background-clip: border-box; background-origin: padding-box; background-position: 0% 0%; background-size: auto; border-color: rgb(51, 51, 51); border-radius: 0px; border-spacing: 0px; border-width: 0px; box-shadow: none; caption-side: top; clip: auto; color: #333333; content: normal; counter-increment: none; counter-reset: none; cursor: auto; direction: ltr; empty-cells: show; font-family: Tahoma, Arial, Helvetica, sans-serif; font-size: 13px; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: 18px; list-style: outside none disc; opacity: 1; outline: transparent none 0px; pointer-events: visiblepainted; table-layout: auto; text-anchor: start; text-shadow: none; vertical-align: baseline; visibility: visible; z-index: auto;">MSDTC</span> <span style="color: #333333; font-family: Tahoma, Arial, Helvetica, sans-serif; font-size: 13px; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: normal;">is free to use a dynamically allocated port in the port range</span> <span style="background-clip: border-box; background-origin: padding-box; background-position: 0% 0%; background-size: auto; border-color: rgb(34, 34, 34); border-radius: 0px; border-spacing: 0px; border-width: 0px; box-shadow: none; caption-side: top; clip: auto; color: #222222; content: normal; counter-increment: none; counter-reset: none; cursor: auto; direction: ltr; empty-cells: show; font-family: Calibri; font-size: 14px; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: 18px; list-style: outside none disc; opacity: 1; outline: transparent none 0px; pointer-events: visiblepainted; table-layout: auto; text-anchor: start; text-decoration-line: underline; text-shadow: none; vertical-align: baseline; visibility: visible; z-index: auto;">1024-65535</span> <span style="color: #333333; font-family: Tahoma, Arial, Helvetica, sans-serif; font-size: 13px; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: normal;">. Basically, it means that each re-start of MSDTC will result in a different port number. Fortunately you can restrict this port range which means that, instead of creating a rule in Firewall that opens all the ports from 1024 – 65535 you only need to insert the range of ports restricted in RPC setting.</span></div><p style="background-clip: border-box; background-origin: padding-box; background-position: 0% 0%; background-size: auto; border-color: rgb(51, 51, 51); border-radius: 0px; border-spacing: 0px; border-width: 0px; box-shadow: none; caption-side: top; clip: auto; color: #333333; content: normal; counter-increment: none; counter-reset: none; cursor: auto; direction: ltr; empty-cells: show; float: none; font-family: Tahoma, Arial, Helvetica, sans-serif; font-size: 13px; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: 18px; list-style: outside none disc; margin-bottom: 18px; opacity: 1; outline: transparent none 0px; pointer-events: visiblepainted; table-layout: auto; text-anchor: start; text-shadow: none; vertical-align: baseline; visibility: visible; width: 760px; z-index: auto;"></p><div><span style="background-clip: border-box; background-origin: padding-box; background-position: 0% 0%; background-size: auto; border-color: rgb(34, 34, 34); border-radius: 0px; border-spacing: 0px; border-width: 0px; box-shadow: none; caption-side: top; clip: auto; color: #222222; content: normal; counter-increment: none; counter-reset: none; cursor: auto; direction: ltr; empty-cells: show; font-family: Calibri; font-size: 16px; font-stretch: normal; font-style: italic; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: 18px; list-style: outside none disc; opacity: 1; outline: transparent none 0px; pointer-events: visiblepainted; table-layout: auto; text-align: right; text-anchor: start; text-shadow: none; vertical-align: baseline; visibility: visible; z-index: auto;">There is one thing to be considered though</span> <span style="color: #333333; font-family: Tahoma, Arial, Helvetica, sans-serif; font-size: 13px; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: normal;">:</span></div><div><span style="color: #333333; font-family: Tahoma, Arial, Helvetica, sans-serif; font-size: 13px; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: normal;"> </span></div><div><span style="color: #333333; font-family: Tahoma, Arial, Helvetica, sans-serif; font-size: 13px; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: normal;">There can be up to 100 services that depend on RPC and will be affected by this change. Make it not too small… not to big. Doing a little reading on the internet I saw that 50 – 100 ports would be a minimum – maximum for RPC depending services to function, but again it depends on each machine and how many processes depend on RPC. If you want to find out which are these look at RPC service at Dependencies tab and count the active ones.</span></div>
<div style="background-clip: border-box; background-origin: padding-box; background-position: 0% 0%; background-size: auto; border-color: rgb(51, 51, 51); border-radius: 0px; border-spacing: 0px; border-width: 0px; box-shadow: none; caption-side: top; clip: auto; content: normal; counter-increment: none; counter-reset: none; cursor: auto; direction: ltr; empty-cells: show; float: none; font-size: 13px; list-style: outside none disc; margin-bottom: 18px; opacity: 1; outline: transparent none 0px; pointer-events: visiblepainted; table-layout: auto; text-anchor: start; text-shadow: none; vertical-align: baseline; visibility: visible; width: 760px; z-index: auto;"><span style="background-clip: border-box; background-origin: padding-box; background-position: 0% 0%; background-size: auto; border-color: rgb(51, 51, 51); border-radius: 0px; border-spacing: 0px; border-width: 0px; box-shadow: none; caption-side: top; clip: auto; color: #333333; content: normal; counter-increment: none; counter-reset: none; cursor: auto; direction: ltr; empty-cells: show; font-family: Tahoma, Arial, Helvetica, sans-serif; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: 18px; list-style: outside none disc; opacity: 1; outline: transparent none 0px; pointer-events: visiblepainted; table-layout: auto; text-anchor: start; text-decoration-line: underline; text-shadow: none; vertical-align: baseline; visibility: visible; z-index: auto;">
<img alt="RPC_Service" height="300" src="data:image/jpeg;base64,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" style="background-clip: border-box; background-color: white; background-origin: padding-box; background-position: 0% 0%; background-size: auto; border-color: rgb(221, 221, 221); border-radius: 0px; border-spacing: 0px; border-style: solid; border-width: 1px; box-shadow: none; caption-side: top; clear: both; clip: auto; content: normal; counter-increment: none; counter-reset: none; cursor: auto; direction: ltr; display: block; empty-cells: show; float: none; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: 18px; list-style: outside none disc; margin: 10px 232.5px; max-width: 610px; opacity: 1; outline: transparent none 0px; padding: 4px; pointer-events: visiblepainted; table-layout: auto; text-anchor: start; text-shadow: none; vertical-align: baseline; visibility: visible; width: 285px; z-index: auto;" title="RPC_Service" width="285" /></span></div>
<div style="background-clip: border-box; background-origin: padding-box; background-position: 0% 0%; background-size: auto; border-color: rgb(51, 51, 51); border-radius: 0px; border-spacing: 0px; border-width: 0px; box-shadow: none; caption-side: top; clip: auto; content: normal; counter-increment: none; counter-reset: none; cursor: auto; direction: ltr; empty-cells: show; float: none; font-size: 13px; list-style: outside none disc; margin-bottom: 18px; opacity: 1; outline: transparent none 0px; pointer-events: visiblepainted; table-layout: auto; text-anchor: start; text-shadow: none; vertical-align: baseline; visibility: visible; width: 760px; z-index: auto;"><span style="color: #333333; font-family: Tahoma, Arial, Helvetica, sans-serif; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: 18px;">Perform these steps on</span> <span style="background-clip: border-box; background-origin: padding-box; background-position: 0% 0%; background-size: auto; border-color: rgb(51, 51, 51); border-radius: 0px; border-spacing: 0px; border-width: 0px; box-shadow: none; caption-side: top; clip: auto; color: #333333; content: normal; counter-increment: none; counter-reset: none; cursor: auto; direction: ltr; empty-cells: show; font-family: Tahoma, Arial, Helvetica, sans-serif; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: 18px; list-style: outside none disc; opacity: 1; outline: transparent none 0px; pointer-events: visiblepainted; table-layout: auto; text-anchor: start; text-shadow: none; vertical-align: baseline; visibility: visible; z-index: auto;">both machines</span> <span style="color: #333333; font-family: Tahoma, Arial, Helvetica, sans-serif; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: 18px;">in order to configure a different port range. The port range does not have to be the same on both machines.</span></div>
<ol style="background-clip: border-box; background-origin: padding-box; background-position: 0% 0%; background-size: auto; border-color: rgb(51, 51, 51); border-radius: 0px; border-spacing: 0px; border-width: 0px; box-shadow: none; caption-side: top; clip: auto; content: normal; counter-increment: none; counter-reset: none; cursor: auto; direction: ltr; empty-cells: show; float: none; font-size: 13px; list-style-image: none; list-style-position: outside; margin-bottom: 18px; margin-left: 30px; margin-right: 30px; opacity: 1; outline: transparent none 0px; pointer-events: visiblepainted; table-layout: auto; text-anchor: start; text-shadow: none; vertical-align: baseline; visibility: visible; width: 700px; z-index: auto;"><li style="background-clip: border-box; background-origin: padding-box; background-position: 0% 0%; background-size: auto; border-color: rgb(51, 51, 51); border-radius: 0px; border-spacing: 0px; border-width: 0px; box-shadow: none; caption-side: top; clip: auto; content: normal; counter-increment: none; counter-reset: none; cursor: auto; direction: ltr; empty-cells: show; float: none; list-style: outside none decimal; opacity: 1; outline: transparent none 0px; pointer-events: visiblepainted; table-layout: auto; text-anchor: start; text-shadow: none; vertical-align: baseline; visibility: visible; width: 700px; z-index: auto;"><span style="background-clip: border-box; background-origin: padding-box; background-position: 0% 0%; background-size: auto; border-color: rgb(34, 34, 34); border-radius: 0px; border-spacing: 0px; border-width: 0px; box-shadow: none; caption-side: top; clip: auto; color: #222222; content: normal; counter-increment: none; counter-reset: none; cursor: auto; direction: ltr; empty-cells: show; font-family: Calibri; font-size: 16px; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 700; line-height: 18px; list-style: outside none decimal; opacity: 1; outline: transparent none 0px; pointer-events: visiblepainted; table-layout: auto; text-align: right; text-anchor: start; text-shadow: none; vertical-align: baseline; visibility: visible; z-index: auto;">Open Component Services properties windows</span></li>
<div style="background-clip: border-box; background-origin: padding-box; background-position: 0% 0%; background-size: auto; border-color: rgb(51, 51, 51); border-radius: 0px; border-spacing: 0px; border-width: 0px; box-shadow: none; caption-side: top; clip: auto; content: normal; counter-increment: none; counter-reset: none; cursor: auto; direction: ltr; empty-cells: show; float: none; list-style: outside none decimal; margin-bottom: 18px; opacity: 1; outline: transparent none 0px; pointer-events: visiblepainted; table-layout: auto; text-anchor: start; text-shadow: none; vertical-align: baseline; visibility: visible; width: 700px; z-index: auto;"><span style="background-clip: border-box; background-origin: padding-box; background-position: 0% 0%; background-size: auto; border-color: rgb(51, 51, 51); border-radius: 0px; border-spacing: 0px; border-width: 0px; box-shadow: none; caption-side: top; clip: auto; color: #333333; content: normal; counter-increment: none; counter-reset: none; cursor: auto; direction: ltr; empty-cells: show; font-family: Tahoma, Arial, Helvetica, sans-serif; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: 18px; list-style: outside none decimal; opacity: 1; outline: transparent none 0px; pointer-events: visiblepainted; table-layout: auto; text-anchor: start; text-decoration-line: underline; text-shadow: none; vertical-align: baseline; visibility: visible; z-index: auto;">
<img alt="Component Services Properties" height="212" src="data:image/png;base64,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" style="background-clip: border-box; background-color: white; background-origin: padding-box; background-position: 0% 0%; background-size: auto; border-color: rgb(221, 221, 221); border-radius: 0px; border-spacing: 0px; border-style: solid; border-width: 1px; box-shadow: none; caption-side: top; clear: both; clip: auto; content: normal; counter-increment: none; counter-reset: none; cursor: auto; direction: ltr; display: block; empty-cells: show; float: none; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: 18px; list-style: outside none decimal; margin: 10px 195px; max-width: 610px; opacity: 1; outline: transparent none 0px; padding: 4px; pointer-events: visiblepainted; table-layout: auto; text-anchor: start; text-shadow: none; vertical-align: baseline; visibility: visible; width: 300px; z-index: auto;" title="Component Services Properties" width="300" /></span></div>
<li style="background-clip: border-box; background-origin: padding-box; background-position: 0% 0%; background-size: auto; border-color: rgb(51, 51, 51); border-radius: 0px; border-spacing: 0px; border-width: 0px; box-shadow: none; caption-side: top; clip: auto; content: normal; counter-increment: none; counter-reset: none; cursor: auto; direction: ltr; empty-cells: show; float: none; list-style: outside none decimal; opacity: 1; outline: transparent none 0px; pointer-events: visiblepainted; table-layout: auto; text-anchor: start; text-shadow: none; vertical-align: baseline; visibility: visible; width: 700px; z-index: auto;"><span style="background-clip: border-box; background-origin: padding-box; background-position: 0% 0%; background-size: auto; border-color: rgb(34, 34, 34); border-radius: 0px; border-spacing: 0px; border-width: 0px; box-shadow: none; caption-side: top; clip: auto; color: #222222; content: normal; counter-increment: none; counter-reset: none; cursor: auto; direction: ltr; empty-cells: show; font-family: Calibri; font-size: 16px; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 700; line-height: 18px; list-style: outside none decimal; opacity: 1; outline: transparent none 0px; pointer-events: visiblepainted; table-layout: auto; text-align: right; text-anchor: start; text-shadow: none; vertical-align: baseline; visibility: visible; z-index: auto;">Access Default Protocols tab and insert a new port range.</span></li>
<div style="background-clip: border-box; background-origin: padding-box; background-position: 0% 0%; background-size: auto; border-color: rgb(51, 51, 51); border-radius: 0px; border-spacing: 0px; border-width: 0px; box-shadow: none; caption-side: top; clip: auto; content: normal; counter-increment: none; counter-reset: none; cursor: auto; direction: ltr; empty-cells: show; float: none; list-style: outside none decimal; margin-bottom: 18px; opacity: 1; outline: transparent none 0px; pointer-events: visiblepainted; table-layout: auto; text-anchor: start; text-shadow: none; vertical-align: baseline; visibility: visible; width: 700px; z-index: auto;"><span style="background-clip: border-box; background-origin: padding-box; background-position: 0% 0%; background-size: auto; border-color: rgb(51, 51, 51); border-radius: 0px; border-spacing: 0px; border-width: 0px; box-shadow: none; caption-side: top; clip: auto; color: #333333; content: normal; counter-increment: none; counter-reset: none; cursor: auto; direction: ltr; empty-cells: show; font-family: Tahoma, Arial, Helvetica, sans-serif; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: 18px; list-style: outside none decimal; opacity: 1; outline: transparent none 0px; pointer-events: visiblepainted; table-layout: auto; text-anchor: start; text-decoration-line: underline; text-shadow: none; vertical-align: baseline; visibility: visible; z-index: auto;">
<img alt="Change Port Range" height="195" src="data:image/png;base64,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" style="background-clip: border-box; background-color: white; background-origin: padding-box; background-position: 0% 0%; background-size: auto; border-color: rgb(221, 221, 221); border-radius: 0px; border-spacing: 0px; border-style: solid; border-width: 1px; box-shadow: none; caption-side: top; clear: both; clip: auto; content: normal; counter-increment: none; counter-reset: none; cursor: auto; direction: ltr; display: block; empty-cells: show; float: none; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: 18px; list-style: outside none decimal; margin: 10px 195px; max-width: 610px; opacity: 1; outline: transparent none 0px; padding: 4px; pointer-events: visiblepainted; table-layout: auto; text-anchor: start; text-shadow: none; vertical-align: baseline; visibility: visible; width: 300px; z-index: auto;" title="Change Port Range" width="300" /></span></div>
</ol>
<!--<BR><BR><BR>
<div><b>LEAVE ABOVE ALONE, DON'T MESS WITH IT AND DON'T COPY IT</b></div>
<BR><BR><BR>
<div><b>MY STUFF</b></div>-->
<div style="background-clip: border-box; background-origin: padding-box; background-position: 0% 0%; background-size: auto; border-color: rgb(51, 51, 51); border-radius: 0px; border-spacing: 0px; border-width: 0px; box-shadow: none; caption-side: top; clip: auto; content: normal; counter-increment: none; counter-reset: none; cursor: auto; direction: ltr; empty-cells: show; float: none; font-size: 13px; list-style: outside none disc; margin-bottom: 18px; opacity: 1; outline: transparent none 0px; pointer-events: visiblepainted; table-layout: auto; text-anchor: start; text-shadow: none; vertical-align: baseline; visibility: visible; width: 760px; z-index: auto;"><span style="color: #333333; font-family: Tahoma, Arial, Helvetica, sans-serif; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: 18px;">Next, in order to be able to start a Distributed Transaction through MSDTC service – both participating servers must be configured to trust each other by allowing access to the each other’s port used by MSDTC service.</span></div><p style="background-clip: border-box; background-origin: padding-box; background-position: 0% 0%; background-size: auto; border-color: rgb(51, 51, 51); border-radius: 0px; border-spacing: 0px; border-width: 0px; box-shadow: none; caption-side: top; clip: auto; color: #333333; content: normal; counter-increment: none; counter-reset: none; cursor: auto; direction: ltr; empty-cells: show; float: none; font-family: Tahoma, Arial, Helvetica, sans-serif; font-size: 13px; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: 18px; list-style: outside none disc; margin-bottom: 18px; opacity: 1; outline: transparent none 0px; pointer-events: visiblepainted; table-layout: auto; text-anchor: start; text-shadow: none; vertical-align: baseline; visibility: visible; width: 760px; z-index: auto;"></p><div><span style="background-clip: border-box; background-origin: padding-box; background-position: 0% 0%; background-size: auto; border-color: rgb(126, 34, 23); border-radius: 0px; border-spacing: 0px; border-width: 0px; box-shadow: none; caption-side: top; clip: auto; color: #7e2217; content: normal; counter-increment: none; counter-reset: none; cursor: auto; direction: ltr; empty-cells: show; font-family: Calibri; font-size: 18px; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 700; line-height: 18px; list-style: outside none disc; opacity: 1; outline: transparent none 0px; pointer-events: visiblepainted; table-layout: auto; text-align: right; text-anchor: start; text-shadow: none; vertical-align: baseline; visibility: visible; z-index: auto;">Step 4: Add Firewall Inbound rules</span></div><div><span style="color: #333333; font-family: Tahoma, Arial, Helvetica, sans-serif; font-size: 13px; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: normal;"> </span></div><div style="background-clip: border-box; background-origin: padding-box; background-position: 0% 0%; background-size: auto; border-color: rgb(51, 51, 51); border-radius: 0px; border-spacing: 0px; border-width: 0px; box-shadow: none; caption-side: top; clip: auto; content: normal; counter-increment: none; counter-reset: none; cursor: auto; direction: ltr; empty-cells: show; float: none; font-size: 13px; list-style: outside none disc; margin-bottom: 18px; opacity: 1; outline: transparent none 0px; pointer-events: visiblepainted; table-layout: auto; text-anchor: start; text-shadow: none; vertical-align: baseline; visibility: visible; width: 760px; z-index: auto;"><div><span style="color: #333333; font-family: Tahoma, Arial, Helvetica, sans-serif; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: 18px;">on SERVER 1: to allow inbound requests to the port range configured.</span></div><div><span style="color: #333333; font-family: Tahoma, Arial, Helvetica, sans-serif; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: 18px;">on SERVER 2: to allow inbound requests to the port range configured.</span></div><div><span style="color: #333333; font-family: Tahoma, Arial, Helvetica, sans-serif; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: 18px;">This will enable the communication between SERVER 1 and SERVER 2 through MSDTC service.</span></div></div><div style="background-clip: border-box; background-origin: padding-box; background-position: 0% 0%; background-size: auto; border-color: rgb(51, 51, 51); border-radius: 0px; border-spacing: 0px; border-width: 0px; box-shadow: none; caption-side: top; clip: auto; content: normal; counter-increment: none; counter-reset: none; cursor: auto; direction: ltr; empty-cells: show; float: none; font-size: 13px; list-style: outside none disc; margin-bottom: 18px; opacity: 1; outline: transparent none 0px; pointer-events: visiblepainted; table-layout: auto; text-anchor: start; text-shadow: none; vertical-align: baseline; visibility: visible; width: 760px; z-index: auto;"><span style="color: #333333; font-family: Tahoma, Arial, Helvetica, sans-serif; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: 18px;">SERVER 1 will be able to access MSDTC allocated port from SERVER 2 and SERVER 2 will be able to access MSDTC allocated port from SERVER1.</span></div><p style="background-clip: border-box; background-origin: padding-box; background-position: 0% 0%; background-size: auto; border-color: rgb(51, 51, 51); border-radius: 0px; border-spacing: 0px; border-width: 0px; box-shadow: none; caption-side: top; clip: auto; color: #333333; content: normal; counter-increment: none; counter-reset: none; cursor: auto; direction: ltr; empty-cells: show; float: none; font-family: Tahoma, Arial, Helvetica, sans-serif; font-size: 13px; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: 18px; list-style: outside none disc; margin-bottom: 18px; opacity: 1; outline: transparent none 0px; pointer-events: visiblepainted; table-layout: auto; text-anchor: start; text-shadow: none; vertical-align: baseline; visibility: visible; width: 760px; z-index: auto;"></p><div><span style="background-clip: border-box; background-origin: padding-box; background-position: 0% 0%; background-size: auto; border-color: rgb(126, 34, 23); border-radius: 0px; border-spacing: 0px; border-width: 0px; box-shadow: none; caption-side: top; clip: auto; color: #7e2217; content: normal; counter-increment: none; counter-reset: none; cursor: auto; direction: ltr; empty-cells: show; font-family: Calibri; font-size: 18px; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 700; line-height: 18px; list-style: outside none disc; opacity: 1; outline: transparent none 0px; pointer-events: visiblepainted; table-layout: auto; text-align: right; text-anchor: start; text-shadow: none; vertical-align: baseline; visibility: visible; z-index: auto;">Step 5: Restart both machines</span></div><div><span style="color: #333333; font-family: Tahoma, Arial, Helvetica, sans-serif; font-size: 13px; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: normal;"> </span></div><div style="background-clip: border-box; background-origin: padding-box; background-position: 0% 0%; background-size: auto; border-color: rgb(51, 51, 51); border-radius: 0px; border-spacing: 0px; border-width: 0px; box-shadow: none; caption-side: top; clip: auto; content: normal; counter-increment: none; counter-reset: none; cursor: auto; direction: ltr; empty-cells: show; float: none; font-size: 13px; list-style: outside none disc; margin-bottom: 18px; opacity: 1; outline: transparent none 0px; pointer-events: visiblepainted; table-layout: auto; text-anchor: start; text-shadow: none; vertical-align: baseline; visibility: visible; width: 760px; z-index: auto;"><span style="color: #333333; font-family: Tahoma, Arial, Helvetica, sans-serif; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: 18px;">You need to restart both machines where the port range was changed in order for these modifications to take effect.</span></div>
<!--<div><span style="color: #333333; font-family: Tahoma, Arial, Helvetica, sans-serif; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: 18px;"> </span></div>-->
<div><span style="background-clip: border-box; background-origin: padding-box; background-position: 0% 0%; background-size: auto; border-color: rgb(126, 34, 23); border-radius: 0px; border-spacing: 0px; border-width: 0px; box-shadow: none; caption-side: top; clip: auto; color: #7e2217; content: normal; counter-increment: none; counter-reset: none; cursor: auto; direction: ltr; empty-cells: show; font-family: Calibri; font-size: 18px; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 700; line-height: 18px; list-style: outside none disc; opacity: 1; outline: transparent none 0px; pointer-events: visiblepainted; table-layout: auto; text-align: right; text-anchor: start; text-shadow: none; vertical-align: baseline; visibility: visible; z-index: auto;">Step 6: Testing MSDTC connectivity</span></div><div><span style="color: #333333; font-family: Tahoma, Arial, Helvetica, sans-serif; font-size: 13px; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: normal;"> </span></div><div><span style="color: #333333; font-family: Tahoma, Arial, Helvetica, sans-serif; font-size: 13px; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: normal;">After you had done all of the above, you might want to test first if a Distributed Transaction can be initialized and committed. There are 2 important Microsoft troubleshooting tools that I used and worked for me: DTCping and DTCtester. I will not detail the testing steps because all of them are covered in</span>
<a target="_blank" href="https://www.mssqltips.com/sqlservertip/2083/troubleshooting-sql-server-distributed-transactions-part-1-of-2/">this post at step 2 and step 4.</a>
</div><div></div>
Bonniehttp://www.blogger.com/profile/11241425687786973525noreply@blogger.com4tag:blogger.com,1999:blog-33753991.post-29698984653652076872020-08-31T22:28:00.000-07:002020-08-31T22:28:22.669-07:00SQL Server - Bulk Deletes RevisitedI wrote a blog post about 5 years ago about how to delete data in a database (for example, to clean out old data) in smaller chunks at a time, so as not to overwhelm the log file size. Please read it first if you haven't read it recently:<br />
<br />
<a href="https://geek-goddess-bonnie.blogspot.com/2015/07/sql-server-chunking-large-deletes.html">https://geek-goddess-bonnie.blogspot.com/2015/07/sql-server-chunking-large-deletes.html</a><br />
<br />
I wasn't totally happy with how I ended up doing the deletes in that previous blog post. I also never took into account the effect of changing the AutoGrowth and MaxSize properties. Plus, there are various ways that these deletes can be done. I'll use the date as the condition to delete by:<br />
<ul> <li><b>Method #1</b><br />
<ul> <li>Do the DELETE by the deletion criteria in the loop:<br />
</li>
<li>DELETE TOP(X_number) MyTable WHERE saveddatetime < @time<br />
</li>
</ul> </li>
<li><b>Method #2</b><br />
<ul> <li>Select the deletion criteria into a Table parameter first. Then, in the loop, DELETE TOP() <br />
</li>
<li>DECLARE @keysToDelete TABLE (keys bigint)<br />
</li>
<li>INSERT INTO @keysToDelete SELECT TheKey FROM MyTable WHERE saveddatetime < @time<br />
</li>
<li>-- in the loop:<br />
</li>
<li>DELETE TOP (X_number) MyTable WHERE TheKey IN (SELECT keys FROM @keysToDelete)<br />
</li>
</ul> </li>
<li><b>Method #3</b><br />
<ul> <li>Do the SELECT into the Table parameter and the DELETE both inside the loop<br />
</li>
<li>INSERT INTO @keysToDelete SELECT TOP (X_number) TheKey FROM MyTable WHERE saveddatetime < @time<br />
</li>
<li>DELETE MyTable WHERE TheKey IN (SELECT keys FROM @keysToDelete)<br />
</li>
</ul> </li>
</ul>Here is the code that I used to do the testing. I tested one method at a time, commenting out the other two and restored the database in between each test (obviously) and changing the AutoGrowth when necessary for the each set of tests.<br />
<br />
<div id="codeSnippetWrapper"> <pre id="codeSnippet" style="border-top-style: none; overflow: visible; font-size: 10pt; font-family: 'Courier New', courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #e8d8b7">DECLARE @StartTime datetime <br />DECLARE @LoopStart datetime <br />DECLARE @Elapsed <span style="color: #0000ff">int</span><br /> <br />DECLARE @DaysToKeep <span style="color: #0000ff">int</span> = 7<br /> <br /> -- @DaysToKeep <span style="color: #0000ff">is</span> passed into the SP <span style="color: #0000ff">as</span> a parameter<br /> IF @DaysToKeep > 0<br /> SET @DaysToKeep = -@DaysToKeep -- need to make it negative<br /> <br /> SET NOCOUNT ON<br /> <br /> DECLARE @time datetime<br /> DECLARE @rc INT<br /> DECLARE @LatestTime datetime<br /> <br /> SELECT @LatestTime = MAX(saveddatetime) FROM message<br /> SET @time = DATEADD(day, @delay, @LatestTime)<br /> <br /> -- method #1<br /> SET @rc = 1<br /> SET @StartTime = GETDATE()<br /> WHILE @rc > 0<br /> BEGIN<br /> BEGIN TRANSACTION<br /> SET @LoopStart = GETDATE()<br /> --DELETE TOP (10000) message WHERE saveddatetime < @time<br /> DELETE TOP (100000) message WHERE saveddatetime < @time<br /> SET @rc = @@ROWCOUNT<br /> COMMIT TRANSACTION<br /> CHECKPOINT<br /> <br /> SET @Elapsed = DATEDIFF(MILLISECOND, @LoopStart, GETDATE())<br /> RAISERROR (<span style="color: #006080">'Elapsed %d milliseconds to delete %d rows'</span>, 0, 0, @Elapsed, @rc) WITH NOWAIT<br /> END<br /> <br /> SET @Elapsed = DATEDIFF(MILLISECOND, @StartTime, GETDATE())<br /> RAISERROR (<span style="color: #006080">'TOTAL Elapsed %d milliseconds'</span>, 0, 0, @Elapsed) WITH NOWAIT<br /> <br /> <br /> -- method #2<br /> DECLARE @keysToDelete TABLE (keys bigint) -- <span style="color: #0000ff">this</span> <span style="color: #0000ff">is</span> also needed <span style="color: #0000ff">in</span> method #3<br /> <br /> SET @StartTime = GETDATE()<br /> INSERT INTO @keysToDelete SELECT messagekey FROM message WHERE saveddatetime < @time<br /> SET @rc = 1<br /> WHILE @rc > 0<br /> BEGIN<br /> BEGIN TRANSACTION<br /> SET @LoopStart = GETDATE()<br /> --DELETE TOP (10000) message WHERE messagekey IN (SELECT keys FROM @keysToDelete)<br /> DELETE TOP (100000) message WHERE messagekey IN (SELECT keys FROM @keysToDelete)<br /> SET @rc = @@ROWCOUNT<br /> COMMIT TRANSACTION<br /> CHECKPOINT<br /> <br /> SET @Elapsed = DATEDIFF(MILLISECOND, @LoopStart, GETDATE())<br /> RAISERROR (<span style="color: #006080">'Elapsed %d milliseconds to delete %d rows'</span>, 0, 0, @Elapsed, @rc) WITH NOWAIT<br /> END<br /> <br /> SET @Elapsed = DATEDIFF(MILLISECOND, @StartTime, GETDATE())<br /> RAISERROR (<span style="color: #006080">'TOTAL Elapsed %d milliseconds'</span>, 0, 0, @Elapsed) WITH NOWAIT<br /> <br /> <br /> -- method #3<br /> SET @rc = 1<br /> SET @StartTime = GETDATE()<br /> WHILE @rc > 0<br /> BEGIN<br /> BEGIN TRANSACTION<br /> SET @LoopStart = GETDATE()<br /> --INSERT INTO @keysToDelete SELECT TOP (10000) messagekey FROM message WHERE saveddatetime < @time<br /> INSERT INTO @keysToDelete SELECT TOP (100000) messagekey FROM message WHERE saveddatetime < @time<br /> DELETE message WHERE messagekey IN (SELECT keys FROM @keysToDelete)<br /> SET @rc = @@ROWCOUNT<br /> DELETE @keysToDelete<br /> COMMIT TRANSACTION<br /> CHECKPOINT<br /> <br /> SET @Elapsed = DATEDIFF(MILLISECOND, @LoopStart, GETDATE())<br /> RAISERROR (<span style="color: #006080">'Elapsed %d milliseconds to delete %d rows'</span>, 0, 0, @Elapsed, @rc) WITH NOWAIT<br /> END<br /> <br /> SET @Elapsed = DATEDIFF(MILLISECOND, @StartTime, GETDATE())<br /> RAISERROR (<span style="color: #006080">'TOTAL Elapsed %d milliseconds'</span>, 0, 0, @Elapsed) WITH NOWAIT<br /><br /></pre><br />
</div>For the purposes of this new blog post, we need to see how long the deletes take for each of the three methods and with two different log file Autogrowth settings. As you’ll see in the table below, the smaller Autogrowth setting meant that the log file grew many more times. Each time the log files grows, there’s a performance hit. So, you want to minimize the number of times it grows.<br />
<br />
If you routinely have a lot of rows to delete, like 500,000 or a million or more, then you should think about deleting in larger chunks, but be aware that the more rows that you delete at one time, the larger the database log file will grow. Be sure to account for that by not limiting your log file to too small a size.<br />
<br />
For my testing, I have a database table with 2 million rows and will be deleting approximately 1.8 million rows (which will leave 200,000 rows of the most recent data). This is from a test system that we had been hitting for months without a cleanup in place yet. I finally got the cleanup stored procedures to my liking and figured it was time to do it. There was a lot of tweaking going on as I tested this off and on (in between other work that had more priority), but what I learned is the subject of this blog.<br />
<br />
The test database started with a 18 MB log file and a maxsize of 1000MB<br />
<br />
<table cellspacing="0" cellpadding="2" width="779" border="1"><tbody>
<tr>
<td valign="top" width="387">Log File Growth of<strong> 1 MB<br />
</strong>Deleting<strong> 100,000</strong> at a time<br />
</td>
<td valign="top" width="390">Log File Growth of <strong>1 MB</strong><br />
Deleting<strong> 10,000</strong> at a time<br />
</td>
</tr>
<tr>
<td valign="top" width="387">Method #1 (log grew<strong> 796 </strong>times to<strong> 814 MB</strong>)<br />
TOTAL Elapsed 226777 milliseconds<br />
(<strong>3:48</strong>)<br />
</td>
<td valign="top" width="390">Method #1 (log grew <strong>165</strong> times to <strong>183 MB</strong>)<br />
TOTAL Elapsed 303567 milliseconds<br />
(<strong>5:05</strong>)<br />
</td>
</tr>
<tr>
<td valign="top" width="387">Method #2 (log grew <strong>796</strong> times to <strong>814</strong> <strong>MB</strong>)<br />
OTAL Elapsed 603477 milliseconds<br />
(<strong>10:05</strong>)<br />
</td>
<td valign="top" width="390">Method #2 (log grew <strong>110</strong> times to <strong>128 MB</strong>)<br />
TOTAL Elapsed 1147310 milliseconds<br />
(<strong>19:09</strong>)<br />
</td>
</tr>
<tr>
<td valign="top" width="387">Method #3 (log grew <strong>940</strong> times to <strong>958 MB</strong>)<br />
TOTAL Elapsed 610474 milliseconds<br />
(<strong>10:12</strong>)<br />
</td>
<td valign="top" width="390">Method #3 (log grew <strong>157</strong> times to <strong>175 MB</strong>)<br />
TOTAL Elapsed 580877 milliseconds<br />
(<strong>9:43</strong>)<br />
</td>
</tr>
<tr>
<td valign="top" width="387"> </td>
<td valign="top" width="390"> </td>
</tr>
<tr>
<td valign="top" width="387">Log File Growth of <strong>32 MB</strong><br />
Deleting <strong>100,000</strong> at a time<br />
</td>
<td valign="top" width="390">Log File Growth of <strong>32 MB</strong><br />
Deleting <strong>10,000</strong> at a time<br />
</td>
</tr>
<tr>
<td valign="top" width="387">Method #1 (log grew <strong>28</strong> times to <strong>914 MB</strong>)<br />
TOTAL Elapsed 206517 milliseconds<br />
(<strong>3:28</strong>)<br />
</td>
<td valign="top" width="390">Method #1 (log grew <strong>9</strong> times to <strong>306 MB</strong>)<br />
TOTAL Elapsed 286067 milliseconds<br />
(<strong>4:48</strong>)<br />
</td>
</tr>
<tr>
<td valign="top" width="387">Method #2 (log grew <strong>25</strong> times to <strong>818 MB</strong>)<br />
TOTAL Elapsed 605470 milliseconds<br />
(<strong>10:07</strong>)<br />
</td>
<td valign="top" width="390">Method #2 (log grew <strong>9</strong> times to <strong>306 MB</strong>)<br />
TOTAL Elapsed 1196263 milliseconds<br />
(<strong>19:58</strong>)<br />
</td>
</tr>
<tr>
<td valign="top" width="387">Method #3 (log grew <strong>29</strong>  times to <strong>946 MB</strong>)<br />
TOTAL Elapsed 607330 milliseconds<br />
(<strong>10:09</strong>)<br />
</td>
<td valign="top" width="390">Method #3 (log grew <strong>8</strong> times to <strong>274 MB</strong>)<br />
TOTAL Elapsed 599856 milliseconds<br />
(<strong>10:01</strong>)<br />
</td>
</tr>
</tbody></table><br />
Notice the huge difference in time with Method #2 when deleting 100,000 vs 10,000. In both Autogrowth scenarios, the time it took to delete nearly doubled (10 minutes vs 19 to 20 minutes). That was unexpected, and I have no idea why. Very strange.<br />
<br />
The times for all 3 methods were very similar between the 1 MB and 32 MB Autogrowth settings. However, I would avoid the smaller Autogrowth setting due to how many times the log file grows (as I said earlier, that can be bad for performance). I used the 1MB setting in this test because the database I tested with defaulted to that, which is too small I think. From the Googling I’ve done, 32 MB seemed reasonable.<br />
<br />
The takeaway from all of this is that your individual preferences for your own databases will influence how you handle this: <br />
<br />
If you prefer that this run as quickly as possible and you don’t mind if your log file is large, then you’ll want to do something along the lines of Method #1 (and, if you do the 10,000 delete with that methodology you even get a decent size log file).<br />
<br />
If you’d rather keep your log file as small as possible, and you don’t mind if it takes longer, then Method #3 with 10,000 deletes seems to be the way to go.<br />
<br />
Now, all that said, these 3 Methods are fairly simplistic in their approach. Your own delete conditions may involve much more complicated SELECTs with JOINs and who knows what else. Some of my real-life conditions were simple, but some were very, very complex. YMMV<br />
<br />
One last note: if you are running this cleanup processor from a .NET application, be sure to run it in its own thread, so that it can keep on chugging until it’s done without interrupting anything else. If you set the SqlCommand.CommandTimeout = 0, then you won’t have to worry about your app crashing with a SqlTimeout exception.Bonniehttp://www.blogger.com/profile/11241425687786973525noreply@blogger.com2tag:blogger.com,1999:blog-33753991.post-38052539264906222472020-05-31T21:53:00.001-07:002020-06-08T18:09:57.626-07:00SSL And Certificates For Many-to-Many Servers And ClientsI had a lot of trouble when I was trying to figure out how to configure my Windows Service applications to use https and Certificates. Part of the problem I had was the stuff I was finding when I Googled was often too simplistic. My Windows Service applications (we call them Gateways) are both server and client, which is where my difficulty in configuration comes from. Each Gateway can send messages to other Gateways. It can also receive messages from other Gateways. We can have a network of many Gateways, all communicating with each other. <br />
<br />
I eventually got it all sorted out and documented it so that it was easy to configure the next Gateway that got deployed. Here are the details:<br />
<br />
We're using WCF (Windows Communication Foundation), and to illustrate what I'm writing about, here is part of the ServiceModel section of a sample config. First, just the the <services> and <client> :<br />
<br />
<div abp="5333" id="codeSnippetWrapper"><pre abp="5334" id="codeSnippet" style="background-color: #e8d8b7; color: black; direction: ltr; font-family: "courier new" , "courier" , monospace; font-size: 10pt; line-height: 12pt; margin: 0em; overflow: visible; padding: 0px; text-align: left; width: 100%;"><span abp="5335" style="color: blue;"><</span><span abp="5336" style="color: maroon;">services</span><span abp="5337" style="color: blue;">></span>
<span abp="5339" style="color: blue;"><</span><span abp="5340" style="color: maroon;">service</span> <span abp="5341" style="color: red;">name</span><span abp="5342" style="color: blue;">="My.Application.Service"</span> <span abp="5343" style="color: red;">behaviorConfiguration</span><span abp="5344" style="color: blue;">="ServiceBehavior"</span><span abp="5345" style="color: blue;">></span>
<span abp="5347" style="color: blue;"><</span><span abp="5348" style="color: maroon;">endpoint</span> <span abp="5349" style="color: red;">address</span><span abp="5350" style="color: blue;">="https://MyComputer/My.MessageService"</span>
<span abp="5352" style="color: red;">binding</span><span abp="5353" style="color: blue;">="wsHttpBinding"</span> <span abp="5354" style="color: red;">bindingConfiguration</span><span abp="5355" style="color: blue;">="wsHttpServiceConfig"</span>
<span abp="5357" style="color: red;">contract</span><span abp="5358" style="color: blue;">="My.IMessageService"</span>
<span abp="5360" style="color: red;">name</span><span abp="5361" style="color: blue;">="ServiceEndpoint"</span> <span abp="5362" style="color: blue;">/></span>
<span abp="5364" style="color: blue;"></</span><span abp="5365" style="color: maroon;">service</span><span abp="5366" style="color: blue;">></span>
<span abp="5368" style="color: blue;"></</span><span abp="5369" style="color: maroon;">services</span><span abp="5370" style="color: blue;">></span>
<span abp="5372" style="color: blue;"><</span><span abp="5373" style="color: maroon;">client</span><span abp="5374" style="color: blue;">></span>
<span abp="5376" style="color: blue;"><</span><span abp="5377" style="color: maroon;">endpoint</span> <span abp="5378" style="color: red;">address</span><span abp="5379" style="color: blue;">="https://AddressDoesNotMatter/WeSubstituteWithAddressFromDatabase"</span>
<span abp="5381" style="color: red;">binding</span><span abp="5382" style="color: blue;">="wsHttpBinding"</span> <span abp="5383" style="color: red;">bindingConfiguration</span><span abp="5384" style="color: blue;">="wsHttpClientConfig"</span>
<span abp="5386" style="color: red;">contract</span><span abp="5387" style="color: blue;">="My.IMessageService"</span>
<span abp="5389" style="color: red;">behaviorConfiguration</span><span abp="5390" style="color: blue;">="ClientBehavior"</span>
<span abp="5392" style="color: red;">name</span><span abp="5393" style="color: blue;">="ClientEndpoint"</span> <span abp="5394" style="color: blue;">/></span>
<span abp="5396" style="color: blue;"></</span><span abp="5397" style="color: maroon;">client</span><span abp="5398" style="color: blue;">></span></pre></div><br />
<div >In case there are different requirements for the Service and the Client, you should use two different BindingConfigurations (wsHttpServiceConfig and wsHttpClientConfig in this example). In our Service applications, there is usually no reason to have different configurations, but by specifying two of them, we have an easy way to change them. </div><br />
<div abp="5400">Also note that there are two different behaviorConfigurations, ServiceBehavior and ClientBehavior. More on that later.</div><br />
<div abp="5401">Without any kind of security at all, the two binding configurations look like this:</div><br />
<div abp="5402" id="codeSnippetWrapper"><pre abp="5403" id="codeSnippet" style="background-color: #e8d8b7; color: black; direction: ltr; font-family: "courier new" , "courier" , monospace; font-size: 10pt; line-height: 12pt; margin: 0em; overflow: visible; padding: 0px; text-align: left; width: 100%;"><span abp="5404" style="color: blue;"><</span><span abp="5405" style="color: maroon;">bindings</span><span abp="5406" style="color: blue;">></span>
<b><span abp="5408" style="color: green;"><!-- NO security, NOT https --></span></b>
<span abp="5410" style="color: blue;"><</span><span abp="5411" style="color: maroon;">wsHttpBinding</span><span abp="5412" style="color: blue;">></span>
<span abp="5414" style="color: blue;"><</span><span abp="5415" style="color: maroon;">binding</span> <span abp="5416" style="color: red;">name</span><span abp="5417" style="color: blue;">="wsHttpServiceConfig"</span> <span abp="5418" style="color: red;">openTimeout</span><span abp="5419" style="color: blue;">="00:00:59"</span> <span abp="5420" style="color: red;">sendTimeout</span><span abp="5421" style="color: blue;">="00:00:59"</span>
<span abp="5423" style="color: red;">maxBufferPoolSize</span><span abp="5424" style="color: blue;">="4000000"</span> <span abp="5425" style="color: red;">maxReceivedMessageSize</span><span abp="5426" style="color: blue;">="4000000"</span><span abp="5427" style="color: blue;">></span>
<span abp="5429" style="color: blue;"><</span><span abp="5430" style="color: maroon;">readerQuotas</span> <span abp="5431" style="color: red;">maxDepth</span><span abp="5432" style="color: blue;">="4000000"</span> <span abp="5433" style="color: red;">maxStringContentLength</span><span abp="5434" style="color: blue;">="4000000"</span> <span abp="5435" style="color: red;">maxArrayLength</span><span abp="5436" style="color: blue;">="4000000"</span>
<span abp="5438" style="color: red;">maxBytesPerRead</span><span abp="5439" style="color: blue;">="4000000"</span> <span abp="5440" style="color: red;">maxNameTableCharCount</span><span abp="5441" style="color: blue;">="4000000"</span> <span abp="5442" style="color: blue;">/></span>
<b><span abp="5444" style="color: blue;"><</span><span abp="5445" style="color: maroon;">security</span> <span abp="5446" style="color: red;">mode</span><span abp="5447" style="color: blue;">="None"</span> <span abp="5448" style="color: blue;">/></span></b>
<span abp="5450" style="color: blue;"></</span><span abp="5451" style="color: maroon;">binding</span><span abp="5452" style="color: blue;">></span>
<span abp="5454" style="color: blue;"><</span><span abp="5455" style="color: maroon;">binding</span> <span abp="5456" style="color: red;">name</span><span abp="5457" style="color: blue;">="wsHttpClientConfig"</span> <span abp="5458" style="color: red;">openTimeout</span><span abp="5459" style="color: blue;">="00:00:59"</span> <span abp="5460" style="color: red;">sendTimeout</span><span abp="5461" style="color: blue;">="00:00:59"</span>
<span abp="5463" style="color: red;">maxBufferPoolSize</span><span abp="5464" style="color: blue;">="4000000"</span> <span abp="5465" style="color: red;">maxReceivedMessageSize</span><span abp="5466" style="color: blue;">="4000000"</span><span abp="5467" style="color: blue;">></span>
<span abp="5469" style="color: blue;"><</span><span abp="5470" style="color: maroon;">readerQuotas</span> <span abp="5471" style="color: red;">maxDepth</span><span abp="5472" style="color: blue;">="4000000"</span> <span abp="5473" style="color: red;">maxStringContentLength</span><span abp="5474" style="color: blue;">="4000000"</span> <span abp="5475" style="color: red;">maxArrayLength</span><span abp="5476" style="color: blue;">="4000000"</span>
<span abp="5478" style="color: red;">maxBytesPerRead</span><span abp="5479" style="color: blue;">="4000000"</span> <span abp="5480" style="color: red;">maxNameTableCharCount</span><span abp="5481" style="color: blue;">="4000000"</span> <span abp="5482" style="color: blue;">/></span>
<b><span abp="5484" style="color: blue;"><</span><span abp="5485" style="color: maroon;">security</span> <span abp="5486" style="color: red;">mode</span><span abp="5487" style="color: blue;">="None"</span> <span abp="5488" style="color: blue;">/></span></b>
<span abp="5490" style="color: blue;"></</span><span abp="5491" style="color: maroon;">binding</span><span abp="5492" style="color: blue;">></span>
<span abp="5494" style="color: blue;"></</span><span abp="5495" style="color: maroon;">wsHttpBinding</span><span abp="5496" style="color: blue;">></span>
<span abp="5498" style="color: blue;"></</span><span abp="5499" style="color: maroon;">bindings</span><span abp="5500" style="color: blue;">></span></pre></div><br />
<div abp="5502">Note the <security> tag specifies a mode of "None" (you won't be using https with this set to "None"). </div><br />
<h3 abp="5503">Types of Security</h3><div abp="5504">There are two types of security when using https://.</div><ul abp="5505"><li abp="5506">There is SSL only: the message is encrypted and the client must trust the server’s Certificate (it must be created from a trusted Certificate Authority common to both client and server).<br abp="5507" /> </li>
<li abp="5508">There is mutual authentication: in which both parties, client and server, trust each other’s Certificate (and there is additional encryption) This is what I needed to use for my Gateways.<br abp="5509" /> </li>
</ul><h3 abp="5510">For Both Types</h3><div abp="5511">For both types of security (your URLs will obviously be <b abp="5512">https://</b> rather than http://), the following must be done for each application:</div><div abp="5513">The Certificate must be bound to a Port. Use netsh in a Command window to do that:</div><br />
<div abp="5514" id="codeSnippetWrapper"><pre abp="5515" id="codeSnippet" style="background-color: #e8d8b7; color: black; direction: ltr; font-family: "courier new" , "courier" , monospace; font-size: 10pt; line-height: 12pt; margin: 0em; overflow: visible; padding: 0px; text-align: left; width: 100%;">netsh http add sslcert ipport=0.0.0.0:ServicePort certhash=CertThumbprint appid={48d00867-cd90-45a2-b398-0def54c7e671}</pre></div><ul abp="5516"><li abp="5517">Where ServicePort is the port associated with the URL endpoint address in the config.<br abp="5518" /> <ul abp="5519"><li abp="5520">SSL uses port 443 by default, in which case, you don't need to specify 443 in the config's endpoint address.<br abp="5521" /> </li>
<li abp="5522">But you <b>can</b> use other ports if you need to. Then you would need to specify a port in the config's endpoint address and in the above netsh command.<br abp="5523" /> </li>
</ul></li>
<li abp="5524">CertThumbprint is the Thumbprint of the Certificate that you're binding to this port.<br abp="5525" /> </li>
<li abp="5526">appid can be any valid GUID and the above setting is is just an example. In a .NET application, you could grab a GUID from the project's AssemblyInfo.cs (under the project's Properties in Solution Explorer).<br abp="5527" /> </li>
</ul><div abp="5528">Next question, how do we implement security in the config? It depends on whether you're using SSL only or SSL with authentication, as follows:</div><br />
<h3 abp="5529">SSL Only</h3><div abp="5530">Change the <security mode="None" /> tags, in both binding configurations shown above, to the following:</div><br />
<div abp="5531" id="codeSnippetWrapper"><pre abp="5532" id="codeSnippet" style="background-color: #e8d8b7; color: black; direction: ltr; font-family: "courier new" , "courier" , monospace; font-size: 10pt; line-height: 12pt; margin: 0em; overflow: visible; padding: 0px; text-align: left; width: 100%;"><span abp="5533" style="color: blue;"><</span><span abp="5534" style="color: maroon;">security</span> <span abp="5535" style="color: red;">mode</span><span abp="5536" style="color: blue;">="Transport"</span><span abp="5537" style="color: blue;">></span>
<span abp="5539" style="color: blue;"><</span><span abp="5540" style="color: maroon;">transport</span> <span abp="5541" style="color: red;">clientCredentialType</span><span abp="5542" style="color: blue;">="None"</span> <span abp="5543" style="color: blue;">/></span>
<span abp="5545" style="color: blue;"></</span><span abp="5546" style="color: maroon;">security</span><span abp="5547" style="color: blue;">></span></pre></div><br />
<h3 abp="5548">SSL With Authentication</h3><div abp="5549">For Authentication, we’ll need to make changes to the same two binding configs as shown above for “SSL Only”, but the security mode will be different, and we will be specifying that we’re using Certificates, as follows:</div><br />
<div abp="5550" id="codeSnippetWrapper"><pre abp="5551" id="codeSnippet" style="background-color: #e8d8b7; color: black; direction: ltr; font-family: "courier new" , "courier" , monospace; font-size: 10pt; line-height: 12pt; margin: 0em; overflow: visible; padding: 0px; text-align: left; width: 100%;"><span abp="5552" style="color: blue;"><</span><span abp="5553" style="color: maroon;">security</span> <span abp="5554" style="color: red;">mode</span><span abp="5555" style="color: blue;">="TransportWithMessageCredential"</span><span abp="5556" style="color: blue;">></span>
<span abp="5558" style="color: blue;"><</span><span abp="5559" style="color: maroon;">transport</span> <span abp="5560" style="color: red;">clientCredentialType</span><span abp="5561" style="color: blue;">="Certificate"</span> <span abp="5562" style="color: blue;">/></span>
<span abp="5564" style="color: blue;"><</span><span abp="5565" style="color: maroon;">message</span> <span abp="5566" style="color: red;">clientCredentialType</span><span abp="5567" style="color: blue;">="Certificate"</span> <span abp="5568" style="color: blue;">/></span>
<span abp="5570" style="color: blue;"></</span><span abp="5571" style="color: maroon;">security</span><span abp="5572" style="color: blue;">></span>
</pre></div><br />
<div abp="5575">If you remember, I promised more about the behaviorConfigurations. Here's where they come into play. First, here is an example of what the <behaviors> section might look like if you're <strong abp="5576">*not*</strong> using https and Certificates:</div><br />
<div abp="5577" id="codeSnippetWrapper"><pre abp="5578" id="codeSnippet" style="background-color: #e8d8b7; color: black; direction: ltr; font-family: "courier new" , "courier" , monospace; font-size: 10pt; line-height: 12pt; margin: 0em; overflow: visible; padding: 0px; text-align: left; width: 100%;"><span abp="5579" style="color: blue;"><</span><span abp="5580" style="color: maroon;">behaviors</span><span abp="5581" style="color: blue;">></span>
<b><span abp="5583" style="color: green;"><!-- NO security, NOT https --></span></b>
<span abp="5585" style="color: blue;"><</span><span abp="5586" style="color: maroon;">serviceBehaviors</span><span abp="5587" style="color: blue;">></span>
<span abp="5589" style="color: blue;"><</span><span abp="5590" style="color: maroon;">behavior</span> <span abp="5591" style="color: red;">name</span><span abp="5592" style="color: blue;">="ServiceBehavior"</span><span abp="5593" style="color: blue;">></span>
<span abp="5595" style="color: blue;"><</span><span abp="5596" style="color: maroon;">serviceMetadata</span> <span abp="5597" style="color: red;">httpGetEnabled</span><span abp="5598" style="color: blue;">="true"</span> <span abp="5599" style="color: red;">httpGetUrl</span><span abp="5600" style="color: blue;">="http://MyComputer/My.MessageService"</span> <span abp="5601" style="color: blue;">/></span>
<span abp="5603" style="color: blue;"><</span><span abp="5604" style="color: maroon;">serviceDebug</span> <span abp="5605" style="color: red;">includeExceptionDetailInFaults</span><span abp="5606" style="color: blue;">="true"</span><span abp="5607" style="color: blue;">/></span>
<span abp="5609" style="color: blue;"></</span><span abp="5610" style="color: maroon;">behavior</span><span abp="5611" style="color: blue;">></span>
<span abp="5613" style="color: blue;"></</span><span abp="5614" style="color: maroon;">serviceBehaviors</span><span abp="5615" style="color: blue;">></span>
<span abp="5617" style="color: blue;"><</span><span abp="5618" style="color: maroon;">endpointBehaviors</span><span abp="5619" style="color: blue;">></span>
<span abp="5621" style="color: blue;"><</span><span abp="5622" style="color: maroon;">behavior</span> <span abp="5623" style="color: red;">name</span><span abp="5624" style="color: blue;">="ClientBehavior"</span><span abp="5625" style="color: blue;">></span>
<span abp="5627" style="color: green;"><!-- I have nothing, you may have something here already already --></span>
<span abp="5629" style="color: blue;"></</span><span abp="5630" style="color: maroon;">behavior</span><span abp="5631" style="color: blue;">></span>
<span abp="5633" style="color: blue;"></</span><span abp="5634" style="color: maroon;">endpointBehaviors</span><span abp="5635" style="color: blue;">></span>
<span abp="5637" style="color: blue;"></</span><span abp="5638" style="color: maroon;">behaviors</span><span abp="5639" style="color: blue;">></span></pre></div><br />
<div abp="5641">To implement SSL with authentication, we need to add the to the above <behaviors> section to incorporate the actual Certificate credentials. We'll be making changes under both the <serviceBehaviors> section (adding a <serviceCredentials> section) and the <endpointBehaviors> section (adding a <clientCredentials> section).</div><br />
<div abp="5642"><b>The ServiceBehavior:</b></div><br />
<div abp="5643" id="codeSnippetWrapper"><pre abp="5644" id="codeSnippet" style="background-color: #e8d8b7; color: black; direction: ltr; font-family: "courier new" , "courier" , monospace; font-size: 10pt; line-height: 12pt; margin: 0em; overflow: visible; padding: 0px; text-align: left; width: 100%;"><span abp="5645" style="color: blue;"><</span><span abp="5646" style="color: maroon;">serviceBehaviors</span><span abp="5647" style="color: blue;">></span>
<span abp="5649" style="color: blue;"><</span><span abp="5650" style="color: maroon;">behavior</span> <span abp="5651" style="color: red;">name</span><span abp="5652" style="color: blue;">="ServiceBehavior"</span><span abp="5653" style="color: blue;">></span>
<b><span abp="5655" style="color: green;"><!-- Changed to use https --></span></b>
<span abp="5657" style="color: blue;"><</span><span abp="5658" style="color: maroon;">serviceMetadata</span> <span abp="5659" style="color: red;"><b>httpsGetEnabled</b></span><span abp="5660" style="color: blue;">="true"</span> <span abp="5661" style="color: red;"><b>httpsGetUrl</b></span><span abp="5662" style="color: blue;">="https://MyComputer/My.MessageService"</span> <span abp="5663" style="color: blue;">/></span>
<span abp="5665" style="color: blue;"><</span><span abp="5666" style="color: maroon;">serviceDebug</span> <span abp="5667" style="color: red;">includeExceptionDetailInFaults</span><span abp="5668" style="color: blue;">="true"</span><span abp="5669" style="color: blue;">/></span>
<b><span abp="5671" style="color: green;"><!-- Added <serviceCredentials> --></span>
<span abp="5673" style="color: blue;"><</span><span abp="5674" style="color: maroon;">serviceCredentials</span><span abp="5675" style="color: blue;">></span>
<span abp="5677" style="color: blue;"><</span><span abp="5678" style="color: maroon;">serviceCertificate</span> <span abp="5679" style="color: red;">findValue</span><span abp="5680" style="color: blue;">="ThumbprintForThisServiceCertificate"</span>
<span abp="5682" style="color: red;">toreLocation</span><span abp="5683" style="color: blue;">="LocalMachine"</span>
<span abp="5685" style="color: red;">x509FindType</span><span abp="5686" style="color: blue;">="FindByThumbprint"</span><span abp="5687" style="color: blue;">/></span>
<span abp="5689" style="color: blue;"><</span><span abp="5690" style="color: maroon;">clientCertificate</span><span abp="5691" style="color: blue;">></span>
<span abp="5693" style="color: blue;"><</span><span abp="5694" style="color: maroon;">authentication</span> <span abp="5695" style="color: red;">certificateValidationMode</span><span abp="5696" style="color: blue;">="ChainTrust"</span>
<span abp="5698" style="color: red;">revocationMode</span><span abp="5699" style="color: blue;">="NoCheck"</span>
<span abp="5701" style="color: red;">trustedStoreLocation</span><span abp="5702" style="color: blue;">="LocalMachine"</span> <span abp="5703" style="color: blue;">/></span>
<span abp="5705" style="color: blue;"></</span><span abp="5706" style="color: maroon;">clientCertificate</span><span abp="5707" style="color: blue;">></span>
<span abp="5709" style="color: blue;"></</span><span abp="5710" style="color: maroon;">serviceCredentials</span><span abp="5711" style="color: blue;">></span></b>
<span abp="5713" style="color: blue;"></</span><span abp="5714" style="color: maroon;">behavior</span><span abp="5715" style="color: blue;">></span>
<span abp="5717" style="color: blue;"></</span><span abp="5718" style="color: maroon;">serviceBehaviors</span><span abp="5719" style="color: blue;">></span></pre></div><br />
<div abp="5721"><b>The ClientBehavior</b> (which is "opposite" of the settings in the ServiceBehavior): </div><br />
<div abp="5722" id="codeSnippetWrapper"><pre abp="5723" id="codeSnippet" style="background-color: #e8d8b7; color: black; direction: ltr; font-family: "courier new" , "courier" , monospace; font-size: 10pt; line-height: 12pt; margin: 0em; overflow: visible; padding: 0px; text-align: left; width: 100%;"><span abp="5724" style="color: blue;"><</span><span abp="5725" style="color: maroon;">endpointBehaviors</span><span abp="5726" style="color: blue;">></span>
<span abp="5728" style="color: blue;"><</span><span abp="5729" style="color: maroon;">behavior</span> <span abp="5730" style="color: red;">name</span><span abp="5731" style="color: blue;">="ClientBehavior"</span><span abp="5732" style="color: blue;">></span>
<span abp="5734" style="color: green;"><!-- I have nothing, you may have something here already already --></span>
<b><span abp="5736" style="color: green;"><!-- Added the <clientCredentials> --></span>
<span abp="5738" style="color: blue;"><</span><span abp="5739" style="color: maroon;">clientCredentials</span><span abp="5740" style="color: blue;">></span>
<span abp="5742" style="color: blue;"><</span><span abp="5743" style="color: maroon;">clientCertificate</span> <span abp="5744" style="color: red;">findValue</span><span abp="5745" style="color: blue;">="ThumbprintForThisServiceCertificate"</span>
<span abp="5747" style="color: red;">toreLocation</span><span abp="5748" style="color: blue;">="LocalMachine"</span>
<span abp="5750" style="color: red;">x509FindType</span><span abp="5751" style="color: blue;">="FindByThumbprint"</span><span abp="5752" style="color: blue;">/></span>
<span abp="5754" style="color: blue;"><</span><span abp="5755" style="color: maroon;">serviceCertificate</span><span abp="5756" style="color: blue;">></span>
<span abp="5758" style="color: blue;"><</span><span abp="5759" style="color: maroon;">authentication</span> <span abp="5760" style="color: red;">certificateValidationMode</span><span abp="5761" style="color: blue;">="ChainTrust"</span>
<span abp="5763" style="color: red;">revocationMode</span><span abp="5764" style="color: blue;">="NoCheck"</span>
<span abp="5766" style="color: red;">trustedStoreLocation</span><span abp="5767" style="color: blue;">="LocalMachine"</span> <span abp="5768" style="color: blue;">/></span>
<span abp="5770" style="color: blue;"></</span><span abp="5771" style="color: maroon;">serviceCertificate</span><span abp="5772" style="color: blue;">></span>
<span abp="5774" style="color: blue;"></</span><span abp="5775" style="color: maroon;">clientCredentials</span><span abp="5776" style="color: blue;">></span></b>
<span abp="5778" style="color: blue;"></</span><span abp="5779" style="color: maroon;">behavior</span><span abp="5780" style="color: blue;">></span>
<span abp="5782" style="color: blue;"></</span><span abp="5783" style="color: maroon;">endpointBehaviors</span><span abp="5784" style="color: blue;">></span></pre></div><br />
<div abp="5785">That's pretty much it! Not so bad when it's all laid out for you, I suppose. </div><br />
<div abp="5786">Now, you may still have some questions, such as how to find the Certificate's thumbprint or what kind of Certificate to use. You can Google for that, if the following stuff I'll show below isn't sufficient for you (although, it should be).</div><br />
<div abp="5787">First, a few links for reference. You'll be using the MMC (Microsoft Management Console) snap-in tool for viewing your Certificates:</div><br />
<div abp="5788"><a abp="5789" href="https://docs.microsoft.com/en-us/dotnet/framework/wcf/feature-details/how-to-view-certificates-with-the-mmc-snap-in" target="_blank">https://docs.microsoft.com/en-us/dotnet/framework/wcf/feature-details/how-to-view-certificates-with-the-mmc-snap-in</a></div><div abp="5790"><a abp="5791" href="https://docs.microsoft.com/en-us/dotnet/framework/wcf/feature-details/how-to-retrieve-the-thumbprint-of-a-certificate" target="_blank">https://docs.microsoft.com/en-us/dotnet/framework/wcf/feature-details/how-to-retrieve-the-thumbprint-of-a-certificate</a></div><br />
<div abp="5792">Next, a shortcut for bringing up the MMC snap-in tool. Run from the Windows Command window:</div><br />
<div abp="5793" id="codeSnippetWrapper"><pre abp="5794" id="codeSnippet" style="background-color: #e8d8b7; color: black; direction: ltr; font-family: "courier new" , "courier" , monospace; font-size: 10pt; line-height: 12pt; margin: 0em; overflow: visible; padding: 0px; text-align: left; width: 100%;">certlm.msc (for Local Computer Certificates --- you must be an Administrator on the Local Computer)
certmgr.msc (for Current User Certificates --- no Admin rights required)</pre></div><br />
<div abp="5796">Here is a screenshot with my test Certificate ... simply double-click on the Certificate you need to look at:</div><br />
<div abp="5797"><a abp="5798" href="https://2.bp.blogspot.com/-DNX8PsFmM6o/Xt5VAaAynrI/AAAAAAAAATA/Itvvac0xqkggNFgPjxVya1sCJN9fP1vKwCPcBGAYYCw/s1600/Blog_2020-05-31_Pic1.png" imageanchor="1"><img abp="5799" border="0" data-original-height="486" data-original-width="1238" src="https://2.bp.blogspot.com/-DNX8PsFmM6o/Xt5VAaAynrI/AAAAAAAAATA/Itvvac0xqkggNFgPjxVya1sCJN9fP1vKwCPcBGAYYCw/s1600/Blog_2020-05-31_Pic1.png" /></a></div><br />
<div abp="5800">For the purposes in the scenario I've outlined above, we need both Client Authentication and Server Authentication. You can see that under the "Intended Purposes" column. The description in the dialog window further describes what that intended purpose means.</div><br />
<div abp="5801">Now click on the Details tab:</div><br />
<div abp="5802"><a abp="5803" href="https://3.bp.blogspot.com/-VtMKuZ0cwkc/Xt5VV5BucUI/AAAAAAAAATM/baxD87mEp1I6gu_spOxmdBHinwu0XuFOACPcBGAYYCw/s1600/Blog_2020-05-31_Pic2.png" imageanchor="1"><img abp="5804" border="0" data-original-height="730" data-original-width="519" src="https://3.bp.blogspot.com/-VtMKuZ0cwkc/Xt5VV5BucUI/AAAAAAAAATM/baxD87mEp1I6gu_spOxmdBHinwu0XuFOACPcBGAYYCw/s1600/Blog_2020-05-31_Pic2.png" /></a></div><br />
<div abp="5805">You can see the Client and Server Authentication when the "Enhanced Key Usage" property is selected. </div><br />
<div abp="5806">The "Key Usage" property is not selected in this screenshot, but you can see enough of it to see that it says Digital Signature and Key Encipherment.</div><br />
<div abp="5807">Notice the Thumbprint just below that (I have redacted most of its value). Click on it and copy it from the textbox to use in your config:</div><br />
<div abp="5808"><a abp="5809" href="https://2.bp.blogspot.com/-LfMeN4Nw-HI/Xt5VgTgpIeI/AAAAAAAAATQ/6Vhf2A9aMLkX3nGcAnGbUBHBDzpDKQpdgCPcBGAYYCw/s1600/Blog_2020-05-31_Pic3.png" imageanchor="1"><img abp="5810" border="0" data-original-height="735" data-original-width="520" src="https://2.bp.blogspot.com/-LfMeN4Nw-HI/Xt5VgTgpIeI/AAAAAAAAATQ/6Vhf2A9aMLkX3nGcAnGbUBHBDzpDKQpdgCPcBGAYYCw/s1600/Blog_2020-05-31_Pic3.png" /></a></div><br />
<div abp="5811">I have seen this thumbprint displayed two different ways ... one, like the screenshot shows, with spaces between each character. I have also seen it with no spaces (on Server OS's I think). If your version has the spaces you need to delete them one by one. <b>And here's one more thing to be aware of</b>: Not only are there spaces between each character, <b>but there is an unprintable character at the beginning of the string also!!! Be sure to delete that too!</b></div>Bonniehttp://www.blogger.com/profile/11241425687786973525noreply@blogger.com0tag:blogger.com,1999:blog-33753991.post-62898545481765383412020-04-25T13:47:00.000-07:002020-04-25T13:47:02.662-07:00Saving Your WinForm Data<p>I wrote a blog post 5 months ago about Printing Your WinForm: <a href="https://geek-goddess-bonnie.blogspot.com/2019/11/printing-your-winform.html" target="_blank">https://geek-goddess-bonnie.blogspot.com/2019/11/printing-your-winform.html</a></p><p>Today's post is doing something "almost" similar for saving your WinForm data. I was helping a person on the MSDN forums with his particular need to save data entered by a user on a complex Form to one file, such that the Form could be re-populated by reading the file and processing the info. The Form contained multiple tabs with a picturebox and and a textbox on each tab, along with a button so the user could upload an image for the picturebox. </p><p>I suggested the use of DataSets, because the DataSet .ReadXml() and .WriteXml() are so easy to use. This particular person was not a developer, so I wanted to keep it easy. A more experienced developer can take what I lay out here in my blog and do more with it ... such as save the info contained in the DataTable to a database. <br />
<br />
I would also recommend the use of Typed DataSets over plain old DataSets. I didn't get into that in my reply to the forum questioner, except to mention that Typed DataSets are better <strong>most</strong> of the time, IMHO. More on that later after this first set of code. In either case, the DataType for the PictureBoxImage column should be System.Byte[]. </p><p>We'll need four additional methods on the Form to handle this functionality (with appropriate Save and Repopulate buttons to call the first two methods): </p><ol><li>SaveTabPageInfoToFile() to Save all your TabPage information to a DataSet XML file.<br />
</li>
<li>FillTabPagesFromFile() to repopulate your TabPage information from that saved XML file.<br />
</li>
<li>ImageToByteArray() to take an Image from a PictureBox and create a Byte[] array.<br />
</li>
<li>ByteArrayToImage() to take a Byte[] array and create an Image from it.<br />
</li>
</ol><h3>Code Using Typed DataSets: </h3><p><strong>Number 1:</strong> </p><div id="codeSnippetWrapper"><pre id="codeSnippet" style="border-top-style: none; overflow: visible; font-size: 10pt; font-family: 'Courier New', courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #e8d8b7"><span style="color: #0000ff">public</span> <span style="color: #0000ff">void</span> SaveTabPageInfoToFile()
{
FormInfoDataSet dsFormInfo = <span style="color: #0000ff">new</span> FormInfoDataSet();
<span style="color: #008000">// Fill the DataTable with info from each TabPage</span>
FormInfoDataSet.TabPageRow rowTabPage;
<span style="color: #0000ff">foreach</span> (TabPage page <span style="color: #0000ff">in</span> <span style="color: #0000ff">this</span>.tabControl1.TabPages)
{
rowTabPage = dsFormInfo.TabPage.NewTabPageRow();
dsFormInfo.TabPage.AddTabPageRow(rowTabPage);
rowTabPage.TabPageName = page.Name;
<span style="color: #0000ff">foreach</span> (var ctrl <span style="color: #0000ff">in</span> page.Controls)
{
<span style="color: #0000ff">if</span> (ctrl <span style="color: #0000ff">is</span> TextBox)
{
rowTabPage.TextBoxName = ((TextBox)ctrl).Name;
rowTabPage.TextBoxText = ((TextBox)ctrl).Text;
}
<span style="color: #0000ff">else</span> <span style="color: #0000ff">if</span> (ctrl <span style="color: #0000ff">is</span> PictureBox)
{
rowTabPage.PictureBoxName = ((PictureBox)ctrl).Name;
rowTabPage.PictureBoxImage = ImageToByteArray(((PictureBox)ctrl).Image); <span style="color: #008000">// This is Number 3</span>
}
}
}
<span style="color: #008000">// Now write the DataSet to an XML file</span>
dsFormInfo.WriteXml(<span style="color: #006080">"FormInfo.xml"</span>);
}</pre></div><br />
<strong>Number 2:</strong> <br />
<br />
<div id="codeSnippetWrapper"><pre id="codeSnippet" style="border-top-style: none; overflow: visible; font-size: 10pt; font-family: 'Courier New', courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #e8d8b7"><span style="color: #0000ff">public</span> <span style="color: #0000ff">void</span> FillTabPagesFromFile()
{
FormInfoDataSet dsFormInfo = <span style="color: #0000ff">new</span> FormInfoDataSet();
<span style="color: #008000">// Fill the DataSet from the saved file</span>
dsFormInfo.ReadXml(<span style="color: #006080">"FormInfo.xml"</span>);
<span style="color: #008000">// And now, repopulate all your TabPages</span>
<span style="color: #008000">// Unfortunately, in using a DataTable.Select(), the resulting array of DataRow[] cannot be cast to</span>
<span style="color: #008000">// a TabPageRow[] array and we have to use the a plain old DataRow[], along with the non-typed syntax.</span>
DataRow[] rows;
<span style="color: #0000ff">foreach</span> (TabPage page <span style="color: #0000ff">in</span> <span style="color: #0000ff">this</span>.tabControl1.TabPages)
{
<span style="color: #0000ff">foreach</span> (var ctrl <span style="color: #0000ff">in</span> page.Controls)
{
<span style="color: #0000ff">if</span> (ctrl <span style="color: #0000ff">is</span> TextBox)
{
rows = dsFormInfo.TabPage.Select($<span style="color: #006080">"TextBoxName = '{((TextBox)ctrl).Name}'"</span>);
<span style="color: #0000ff">if</span> (rows.Length > 0)
((TextBox)ctrl).Text = rows[0][<span style="color: #006080">"TextBoxText"</span>].ToString();
}
<span style="color: #0000ff">else</span> <span style="color: #0000ff">if</span> (ctrl <span style="color: #0000ff">is</span> PictureBox)
{
rows = dsFormInfo.TabPage.Select($<span style="color: #006080">"PictureBoxName = '{((PictureBox)ctrl).Name}'"</span>);
<span style="color: #0000ff">if</span> (rows.Length > 0)
((PictureBox)ctrl).Image = ByteArrayToImage(rows[0][<span style="color: #006080">"PictureBoxImage"</span>] <span style="color: #0000ff">as</span> Byte[]); <span style="color: #008000">// This is Number 4</span>
}
}
}
}</pre></div><br />
<strong>Number 3:</strong> <br />
<br />
<div id="codeSnippetWrapper"><pre id="codeSnippet" style="border-top-style: none; overflow: visible; font-size: 10pt; font-family: 'Courier New', courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #e8d8b7"><span style="color: #0000ff">private</span> Byte[] ImageToByteArray(Image image)
{
var ms = <span style="color: #0000ff">new</span> System.IO.MemoryStream();
image.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
<span style="color: #0000ff">return</span> ms.ToArray();
}</pre></div><br />
<strong>Number 4:</strong><br />
<br />
<div id="codeSnippetWrapper"><pre id="codeSnippet" style="border-top-style: none; overflow: visible; font-size: 10pt; font-family: 'Courier New', courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #e8d8b7"><span style="color: #0000ff">private</span> Image ByteArrayToImage(Byte[] bytes)
{
var ms = <span style="color: #0000ff">new</span> System.IO.MemoryStream(bytes);
<span style="color: #0000ff">return</span> Image.FromStream(ms);
}</pre></div><br />
<h4>Another few words about Typed DataSets</h4>In this particular example, a Typed DataSet was useful in Number 1, but not so much in Number 2. The moral of this story is that, in cases like this, unless you have an existing Typed DataSet already defined in your application, possibly for other uses, then you may not want to go through the steps to create one for something as simple as this. In which case, I suggest using a global DataSet variable and defining the DataSet in your Form's constructor to be utilized in the two methods, like this: <br />
<h3>Code that does <u><b>not</b></u> use a Typed DataSet: </h3><br />
<div id="codeSnippetWrapper"><pre id="codeSnippet" style="border-top-style: none; overflow: visible; font-size: 10pt; font-family: 'Courier New', courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #e8d8b7"><span style="color: #008000">// define two global variables:</span>
<span style="color: #0000ff">private</span> DataSet dsFormInfo;
<span style="color: #0000ff">private</span> DataTable dtTabPage;
<span style="color: #008000">// In the Form's constructor:</span>
<span style="color: #0000ff">public</span> Form1()
{
InitializeComponent();
<span style="color: #008000">// add the code to define your DataSet/DataTable</span>
<span style="color: #0000ff">this</span>.dsFormInfo = <span style="color: #0000ff">new</span> DataSet();
<span style="color: #0000ff">this</span>.dtTabPage = <span style="color: #0000ff">new</span> DataTable();
<span style="color: #0000ff">this</span>.dtTabPage.Columns.Add(<span style="color: #006080">"TabPageName"</span>, <span style="color: #0000ff">typeof</span>(<span style="color: #0000ff">string</span>));
<span style="color: #0000ff">this</span>.dtTabPage.Columns.Add(<span style="color: #006080">"TextBoxName"</span>, <span style="color: #0000ff">typeof</span>(<span style="color: #0000ff">string</span>));
<span style="color: #0000ff">this</span>.dtTabPage.Columns.Add(<span style="color: #006080">"TextBoxText"</span>, <span style="color: #0000ff">typeof</span>(<span style="color: #0000ff">string</span>));
<span style="color: #0000ff">this</span>.dtTabPage.Columns.Add(<span style="color: #006080">"PictureBoxName"</span>, <span style="color: #0000ff">typeof</span>(<span style="color: #0000ff">string</span>));
<span style="color: #0000ff">this</span>.dtTabPage.Columns.Add(<span style="color: #006080">"PictureBoxImage"</span>, <span style="color: #0000ff">typeof</span>(System.Byte[]));
<span style="color: #0000ff">this</span>.dsFormInfo.Tables.Add(<span style="color: #0000ff">this</span>.dtTabPage);
}</pre></div><br />
Now change <strong>the bolded code below</strong> in your two methods (Number 1 and 2) accordingly:<br />
<br />
<div id="codeSnippetWrapper"><pre id="codeSnippet" style="border-top-style: none; overflow: visible; font-size: 10pt; font-family: 'Courier New', courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #e8d8b7"><span style="color: #0000ff">public</span> <span style="color: #0000ff">void</span> SaveTabPageInfoToFile()
{
<strong><span style="color: #008000">// Start with an empty DataSet/DataTable</span>
<span style="color: #0000ff">this</span>.dsFormInfo.Clear();</strong>
<span style="color: #008000">// Fill the DataTable with info from each TabPage</span>
<strong><span style="color: #008000">// using the non-Typed syntax</span>
DataRow rowTabPage</strong>
<span style="color: #0000ff">foreach</span> (TabPage page <span style="color: #0000ff">in</span> <span style="color: #0000ff">this</span>.tabControl1.TabPages)
{
rowTabPage = <strong><span style="color: #0000ff">this</span>.dtTabPage.NewRow();
<span style="color: #0000ff">this</span>.dtTabPage.Rows.Add(rowTabPage);</strong>
rowTabPage<strong>[<span style="color: #006080">"TabPageName"</span>]</strong> = page.Name;
<span style="color: #0000ff">foreach</span> (var ctrl <span style="color: #0000ff">in</span> page.Controls)
{
<span style="color: #0000ff">if</span> (ctrl <span style="color: #0000ff">is</span> TextBox)
{
rowTabPage<strong>[<span style="color: #006080">"TextBoxName"</span>]</strong> = ((TextBox)ctrl).Name;
rowTabPage<strong>[<span style="color: #006080">"TextBoxText"</span>]</strong> = ((TextBox)ctrl).Text;
}
<span style="color: #0000ff">else</span> <span style="color: #0000ff">if</span> (ctrl <span style="color: #0000ff">is</span> PictureBox)
{
rowTabPage<strong>[<span style="color: #006080">"PictureBoxName"</span>]</strong> = ((PictureBox)ctrl).Name;
rowTabPage<strong>[<span style="color: #006080">"PictureBoxImage"</span>]</strong> = ImageToByteArray(((PictureBox)ctrl).Image); <span style="color: #008000">// This is Number 3</span>
}
}
}
<span style="color: #008000">// Now write the DataSet to an XML file</span>
<strong><span style="color: #0000ff">this</span>.</strong>dsFormInfo.WriteXml(<span style="color: #006080">"FormInfo.xml"</span>);
}</pre></div><br />
<br />
<div id="codeSnippetWrapper"><pre id="codeSnippet" style="border-top-style: none; overflow: visible; font-size: 10pt; font-family: 'Courier New', courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #e8d8b7"><span style="color: #0000ff">public</span> <span style="color: #0000ff">void</span> FillTabPagesFromFile()
{
<span style="color: #008000">// Start with an empty DataSet/DataTable</span>
<span style="color: #0000ff">this</span>.dsFormInfo.Clear();
<span style="color: #008000">// Fill the DataSet from the saved file</span>
<strong><span style="color: #0000ff">this</span>.</strong>dsFormInfo.ReadXml(<span style="color: #006080">"FormInfo.xml"</span>);
<span style="color: #008000">// And now, repopulate all your TabPages</span>
DataRow[] rows;
<span style="color: #0000ff">foreach</span> (TabPage page <span style="color: #0000ff">in</span> <span style="color: #0000ff">this</span>.tabControl1.TabPages)
{
<span style="color: #0000ff">foreach</span> (var ctrl <span style="color: #0000ff">in</span> page.Controls)
{
<span style="color: #0000ff">if</span> (ctrl <span style="color: #0000ff">is</span> TextBox)
{
rows = <strong><span style="color: #0000ff">this</span>.dtTabPage</strong>.Select($<span style="color: #006080">"TextBoxName = '{((TextBox)ctrl).Name}'"</span>);
<span style="color: #0000ff">if</span> (rows.Length > 0)
((TextBox)ctrl).Text = rows[0][<span style="color: #006080">"TextBoxText"</span>].ToString();
}
<span style="color: #0000ff">else</span> <span style="color: #0000ff">if</span> (ctrl <span style="color: #0000ff">is</span> PictureBox)
{
rows = <strong><span style="color: #0000ff">this</span>.dtTabPage</strong>.Select($<span style="color: #006080">"PictureBoxName = '{((PictureBox)ctrl).Name}'"</span>);
<span style="color: #0000ff">if</span> (rows.Length > 0)
((PictureBox)ctrl).Image = ByteArrayToImage(rows[0][<span style="color: #006080">"PictureBoxImage"</span>] <span style="color: #0000ff">as</span> Byte[]);
}
}
}
}</pre></div><p>Happy Coding!  =0)</p>Bonniehttp://www.blogger.com/profile/11241425687786973525noreply@blogger.com0tag:blogger.com,1999:blog-33753991.post-25536589333230267412020-03-22T17:31:00.000-07:002020-03-22T17:31:48.936-07:00So You Have To Work From Home --- Now What?<br />
<div style="-en-clipboard: true;">
The work from home (WFH) experience is going to be new to a whole lot of people, but not for me. I've been working from home (off and on) for more than 30 years after having a few kids in the early 80's. In the late 80's, I was asked if I could write some software (to interface with cash registers and produce back-end reports) and I said sure (with no experience at all with cash registers)! When I was done writing that successful product, I started my own software business from home.</div>
<div>
<br /></div>
<div>
Everything was quite different in those days. I connected to "chat rooms" for technical information using a modem. Those chat rooms eventually became "forums" (where I made many friends). The Internet was there (although it was typically referred to as the World Wide Web), but it was nothing like it is today!</div>
<div>
<br /></div>
<div>
My business morphed into software contracting and finally (after being tired of being a "starving programmer"), I worked as an employee at a number of companies over the next 20 years ... some companies insisted that everyone work on the premises, others (the enlightened companies) allowed work from home. All in all, I've worked from home much more often than not.</div>
<div>
<br /></div>
<div>
In the last 30+ years, I've learned a lot about being productive in a home environment. These things apply to everyone who has to work from home, whether you're an office worker, in management or in the tech industry.<br />
<br /></div>
<h3>
Get A Room!</h3>
<div>
First, you've got to have a space dedicated to work. A separate room is preferable, but not always possible. I've been lucky to have a separate room that I could dedicate as my "office space" in every house (or apartment) that I've lived in. Sometimes, you just <b>*have to*</b> be able to shut the door!! ;0) </div>
<div>
<br /></div>
<div>
At the very least, you should have a space where you can spread out all your work stuff and keep it there. Setting up your work stuff on the dining room table, that needs to be used for eating dinner every evening, is not an ideal set up. But, if it's all you've got, you've got to at least be organized. Maybe keep your stuff in a large Rubbermaid container, or something similar, that can easily be moved.<br />
<br /></div>
<h3>
Get Connected</h3>
<div>
Every job these days entails having a computer, if only for email if nothing else. You'll most likely need a way to connect to the company network from home. The best way is through a VPN (Virtual Private Network, which is highly recommended for security purposes). There are other methodologies for connecting, such as TeamViewer and LogMeIn. Your company IT people should be able to help you get going with the setup for remote connections.<br />
<br /></div>
<h3>
Endless Meetings? Nah!</h3>
<div>
You'll also need to be able to conduct and/or attend virtual meetings. It can be done solely with phone conference calls, but frequently a meeting needs to have the ability to share screens or have a camera to show a whiteboard or other things that aren't on a computer (and also, to see your co-workers "face-to-face"). There are plenty of virtual meeting software options, such as Skype, GoToMeeting, Microsoft Teams and more. </div>
<div>
<br /></div>
<div>
The up-side to this is that you and your co-workers can probably do away with a lot of excess meetings, since a lot of the communication can be easily accomplished with email. If that's not working for a particular problem, for whatever reason, then don't hesitate to have a phone call or use the meeting tools.</div>
<div>
<br /></div>
<div>
There are a lot of distractions in an office environment (people popping their head in your office ... hey, ya got a minute for a quick question?) These kinds of distractions interrupt your work, but they're so common in an office environment that people don't even think about them as disruptive to your concentration.</div>
<div>
<br /></div>
<div>
The company that I currently work for (we all work remotely) has instituted "Office Hours" from 9:00-10:00 AM and from 2:00-3:00 PM ... during each of those one hour time slots, everyone is fair game for interruptions with work-related questions. And when you're really busy, you can ignore email outside of those two time slots and address them only during the appropriate time slot (unless, of course, it's an urgent matter that needs addressing immediately).<br />
<br /></div>
<h3>
Balance Working Hours With Private Hours</h3>
<div>
Figure out what will make you feel like you're "at work". Some people like to get dressed in work clothes every morning (well, maybe "Casual Friday" kind of work clothes). For some, it's that first cup of coffee, or sorting through your email or reading a work-related website. For me, it's the coffee ... I usually work in my bathrobe for a couple of hours first. (I know, TMI ... ha ha)</div>
<div>
<br /></div>
<div>
You should figure out what your work hours will be and then stick to it! If you don't, it can impact you in two different ways:</div>
<div>
<br /></div>
<div>
One way is distraction ... oh, I just need to do this one thing first before I start work (which may balloon to a few more things), etc. Well, think about it ... when you actually had to drive to the office every day, that "one thing" didn't get done before you went to work, did it? So, don't make it any different now that you're home all day. (Although, granted, you might have to be more flexible if you have children who are home from school).</div>
<div>
<br /></div>
<div>
The flip side of distraction is working too much. It's an easy trap to fall into ... your work is right there at home and it's easy to be tempted to keep working longer than you would at the office. Don't do it ... at the end of your self-appointed office hours, that's it. Don't even think about work. Now is your personal/family time and work will wait until tomorrow morning. </div>
<div>
<br /></div>
<div>
Bottom line: it's all about good work habits. In other words, discipline!<br />
<br /></div>
<h3>
Make Time For Yourself</h3>
<div>
Take a lunch break. A real lunch break ... don't make a sandwich and take it back to eat at your desk. Eat lunch in the kitchen, or on your back deck/balcony/whatever if it's a nice day.</div>
<div>
<br /></div>
<div>
Exercise. You'll be a lot more sedentary working from home (without those trips to the water cooler to gossip with your co-workers). Take a quick 10 or 15 minute walk, run or bike ride at lunchtime or mid-afternoon. If the weather's not cooperating, just walking around your house will work too (especially if you have stairs you can go up and down).<br />
<br /></div>
<h3>
And Finally ...</h3>
<div>
This emergency situation won't last forever (hopefully). You may find that working from home suits you just fine! You may find that you're way more productive at home than you could ever be at the office (without sacrificing your "me time"). And your employer may discover that many of their employees <b>*can*</b> work productively from home and start allowing it on a regular basis.<br />
<br /></div>
<h3>
Stay Safe! =0)</h3>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<b></b><i></i><u></u><sub></sub><sup></sup><strike></strike>Bonniehttp://www.blogger.com/profile/11241425687786973525noreply@blogger.com1tag:blogger.com,1999:blog-33753991.post-81258616307642288032020-02-29T16:56:00.000-08:002020-02-29T16:56:24.260-08:00Organize Your Projects With Partial Classes<p>I was recently asked if I had any type of procedure or process that I follow for creating Classes. I responded, "No, I don’t have anything concrete for doing that. Sometimes whatever you’re trying to accomplish can dictate how you will handle creating classes".</p><p>But here's one tip that I find can often be useful and that is, as the title of this post indicates, using partial classes for project organization. It can also be useful when you have a few different team members that need to work on different parts of the class. Let me explain ...</p><p>Let's say you have an application that processes various types of messages that it receives. This is what MyMessage class might look like:</p><div id="codeSnippetWrapper"> <pre id="codeSnippet" style="border-top-style: none; overflow: visible; font-size: 10pt; font-family: 'Courier New', courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #e8d8b7"><span style="color: #0000ff">public</span> <span style="color: #0000ff">class</span> MyMessage<br />{<br /> <span style="color: #0000ff">public</span> <span style="color: #0000ff">string</span> MessageType { get; set; }<br /> <span style="color: #0000ff">public</span> <span style="color: #0000ff">string</span> MessageData { get; set; }<br /> <span style="color: #0000ff">public</span> DateTime CreatedDatetime { get; set; }<br /> <span style="color: #0000ff">public</span> <span style="color: #0000ff">string</span> ReceivedFrom { get; set; }<br /> <span style="color: #0000ff">public</span> <span style="color: #0000ff">string</span> SendTo { get; set; }<br />}<br /></pre></div><p>Now, let's say that you have three categories of messages: Incidents, Requests, Resources. You might organize this by having four partial class files. These four files could be named MessageProcessor.cs, MessageIncidentProcessor.cs, MessageResourceProcessor.cs and MessageRequestProcessor.cs. Note that all these files start with the word "Message" ... this effectively groups them all together in your project making it obvious that they belong together and making them easy to find in your project. </p><p>One could also use project folders for organizing similar functionality, but I often find that it's easier to find what you're looking for by grouping by name of file and not "hiding" files in folders. Maybe that's just me.  ;0) It probably also depends on the size of your project (if you have a lot of files in your project, perhaps folder organization is better). However, that is <b>*NOT*</b> the topic of this blog post! It's about partial classes!  =0)</p><p>As you may have guessed by now, the partial class will be called MessageProcessor and the MessageProcessor.cs file will contain all the variables and methods that are common between the various MessageTypes. Any method that is common to at least two MessageTypes belongs here. The main functionality of the code in the MessageProcessor.cs file is to receive the message, and then call the appropriate method to process it (which will be methods in the other .cs files).</p><p>OK, now for the code:</p><p>First, the "controlling" MessageProcessor.cs partial class file.</p><div id="codeSnippetWrapper"> <pre id="codeSnippet" style="border-top-style: none; overflow: visible; font-size: 10pt; font-family: 'Courier New', courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #e8d8b7"><span style="color: #0000ff">public</span> <span style="color: #0000ff">partial</span> <span style="color: #0000ff">class</span> MessageProcessor<br />{<br /> <span style="color: #008000">// Note that the constructor is only in this "main" class file</span><br /> <span style="color: #0000ff">public</span> MessageProcessor()<br /> {<br /> <span style="color: #008000">// initialize stuff here, probably having to do with setting up</span><br /> <span style="color: #008000">// for receiving messages, and whatever else all three message types</span><br /> <span style="color: #008000">// have in common for</span><br /> }<br /> <span style="color: #008000">// Next, we'll have all methods that are common to all types of Messages</span><br /> <span style="color: #008000">// The first being processing the incoming message and calling the appropriate methods</span><br /> <span style="color: #0000ff">public</span> <span style="color: #0000ff">bool</span> ProcessMessage(MyMessage message)<br /> {<br /> <span style="color: #0000ff">bool</span> IsOK = <span style="color: #0000ff">true</span>;<br /> <span style="color: #0000ff">switch</span> (message.MessageType)<br /> {<br /> <span style="color: #008000">// Incidents</span><br /> <span style="color: #0000ff">case</span> <span style="color: #006080">"NewIncident"</span>:<br /> IsOK = <span style="color: #0000ff">this</span>.ProcessNewIncident(message);<br /> <span style="color: #0000ff">break</span>;<br /> <span style="color: #0000ff">case</span> <span style="color: #006080">"UpdateIncident"</span>:<br /> IsOK = <span style="color: #0000ff">this</span>.ProcessIncidentUpdate(message);<br /> <span style="color: #0000ff">break</span>;<br /> <span style="color: #0000ff">case</span> <span style="color: #006080">"CloseIncident"</span>:<br /> IsOK = <span style="color: #0000ff">this</span>.ProcessIncidentClose(message);<br /> <span style="color: #0000ff">break</span>;<br /> <span style="color: #008000">// Resources</span><br /> <span style="color: #0000ff">case</span> <span style="color: #006080">"NewResource"</span>:<br /> IsOK = <span style="color: #0000ff">this</span>.ProcessNewResource(message);<br /> <span style="color: #0000ff">break</span>;<br /> <span style="color: #0000ff">case</span> <span style="color: #006080">"AssignResource"</span>:<br /> IsOK = <span style="color: #0000ff">this</span>.ProcessResourceAssignment(message);<br /> <span style="color: #0000ff">break</span>;<br /> <span style="color: #0000ff">case</span> <span style="color: #006080">"UpdateResource"</span>:<br /> IsOK = <span style="color: #0000ff">this</span>.ProcessResourceUpdate(message);<br /> <span style="color: #0000ff">break</span>;<br /> <span style="color: #008000">// Requests</span><br /> <span style="color: #0000ff">case</span> <span style="color: #006080">"RequestForTransfer"</span>:<br /> IsOK = <span style="color: #0000ff">this</span>.ProcessTransferRequest(message);<br /> <span style="color: #0000ff">break</span>;<br /> <span style="color: #0000ff">default</span>:<br /> <span style="color: #008000">// some default behavior or</span><br /> <span style="color: #008000">// log error or ignore or whatever</span><br /> <span style="color: #0000ff">break</span>;<br /> }<br /> <span style="color: #0000ff">return</span> IsOK;<br /> }<br /> <span style="color: #008000">// Add additional methods that are common across all MessageTypes</span><br />}<br /></pre></div><p>Name the next file MessageIncidentProcessor.cs </p><div id="codeSnippetWrapper"> <pre id="codeSnippet" style="border-top-style: none; overflow: visible; font-size: 10pt; font-family: 'Courier New', courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #e8d8b7"><span style="color: #0000ff">public</span> <span style="color: #0000ff">partial</span> <span style="color: #0000ff">class</span> MessageProcessor<br />{<br /> <span style="color: #0000ff">protected</span> <span style="color: #0000ff">bool</span> ProcessNewIncident(MyMessage message)<br /> {<br /> <span style="color: #0000ff">bool</span> IsOK = <span style="color: #0000ff">true</span>;<br /> <span style="color: #008000">// Necessary code to process, setting IsOK as needed</span><br /> <span style="color: #0000ff">return</span> IsOK;<br /> }<br /> <span style="color: #0000ff">protected</span> <span style="color: #0000ff">bool</span> ProcessIncidentUpdate(MyMessage message)<br /> {<br /> <span style="color: #0000ff">bool</span> IsOK = <span style="color: #0000ff">true</span>;<br /> <span style="color: #008000">// Necessary code to process, setting IsOK as needed</span><br /> <span style="color: #0000ff">return</span> IsOK;<br /> }<br /> <span style="color: #0000ff">protected</span> <span style="color: #0000ff">bool</span> ProcessIncidentClose(MyMessage message)<br /> {<br /> <span style="color: #0000ff">bool</span> IsOK = <span style="color: #0000ff">true</span>;<br /> <span style="color: #008000">// Necessary code to process, setting IsOK as needed</span><br /> <span style="color: #0000ff">return</span> IsOK;<br /> }<br /> <span style="color: #008000">// Add additional methods that are only used for Incidents</span><br />}<br /></pre></div><p>The next file is called MessageResourceProcessor.cs</p><div id="codeSnippetWrapper"> <pre id="codeSnippet" style="border-top-style: none; overflow: visible; font-size: 10pt; font-family: 'Courier New', courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #e8d8b7"><span style="color: #0000ff">public</span> <span style="color: #0000ff">partial</span> <span style="color: #0000ff">class</span> MessageProcessor<br />{<br /> <span style="color: #0000ff">protected</span> <span style="color: #0000ff">bool</span> ProcessNewResource(MyMessage message)<br /> {<br /> <span style="color: #0000ff">bool</span> IsOK = <span style="color: #0000ff">true</span>;<br /> <span style="color: #008000">// Necessary code to process, setting IsOK as needed</span><br /> <span style="color: #0000ff">return</span> IsOK;<br /> }<br /> <span style="color: #0000ff">protected</span> <span style="color: #0000ff">bool</span> ProcessResourceAssignment(MyMessage message)<br /> {<br /> <span style="color: #0000ff">bool</span> IsOK = <span style="color: #0000ff">true</span>;<br /> <span style="color: #008000">// Necessary code to process, setting IsOK as needed</span><br /> <span style="color: #0000ff">return</span> IsOK;<br /> }<br /> <span style="color: #0000ff">protected</span> <span style="color: #0000ff">bool</span> ProcessResourceUpdate(MyMessage message)<br /> {<br /> <span style="color: #0000ff">bool</span> IsOK = <span style="color: #0000ff">true</span>;<br /> <span style="color: #008000">// Necessary code to process, setting IsOK as needed</span><br /> <span style="color: #0000ff">return</span> IsOK;<br /> }<br /> <span style="color: #008000">// Add additional methods that are only used for Resources</span><br />}<br /></pre></div><p>And, lastly, call this file MessageRequestProcessor.cs</p><div id="codeSnippetWrapper"> <pre id="codeSnippet" style="border-top-style: none; overflow: visible; font-size: 10pt; font-family: 'Courier New', courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #e8d8b7"><span style="color: #0000ff">public</span> <span style="color: #0000ff">partial</span> <span style="color: #0000ff">class</span> MessageProcessor<br />{<br /> <span style="color: #0000ff">protected</span> <span style="color: #0000ff">bool</span> ProcessTransferRequest(MyMessage message)<br /> {<br /> <span style="color: #0000ff">bool</span> IsOK = <span style="color: #0000ff">true</span>;<br /> <span style="color: #008000">// Necessary code to process, setting IsOK as needed</span><br /> <span style="color: #0000ff">return</span> IsOK;<br /> }<br /> <span style="color: #008000">// Add additional methods that are only used for Requests</span><br />}<br /></pre></div><p>Well, now let's say that the Requests need an additional constructor. Let's change the MessageRequestProcessor.cs file to look like this:</p><div id="codeSnippetWrapper"> <pre id="codeSnippet" style="border-top-style: none; overflow: visible; font-size: 10pt; font-family: 'Courier New', courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #e8d8b7"><span style="color: #0000ff">public</span> <span style="color: #0000ff">partial</span> <span style="color: #0000ff">class</span> MessageProcessor<br />{<br /> <span style="color: #0000ff">private</span> <span style="color: #0000ff">bool</span> SendResponse = <span style="color: #0000ff">false</span>;<br /> <br /> <span style="color: #008000">// An additional constructor needed for Requests</span><br /> <span style="color: #0000ff">public</span> MessageProcessor(<span style="color: #0000ff">bool</span> sendResponse) : <span style="color: #0000ff">base</span>()<br /> {<br /> <span style="color: #0000ff">this</span>.SendResponse = sendResponse;<br /> }<br /> <span style="color: #0000ff">protected</span> <span style="color: #0000ff">bool</span> ProcessTransferRequest(MyMessage message)<br /> {<br /> <span style="color: #0000ff">bool</span> IsOK = <span style="color: #0000ff">true</span>;<br /> <span style="color: #008000">// Necessary code to process, setting IsOK as needed</span><br /> <span style="color: #0000ff">if</span> (<span style="color: #0000ff">this</span>.SendResponse)<br /> {<br /> <span style="color: #008000">// code to send the response</span><br /> }<br /> <span style="color: #0000ff">return</span> IsOK;<br /> }<br /> <span style="color: #008000">// Add additional methods that are only used for Requests</span><br />}<br /></pre></div><p>Now, how does this structure help co-worker cooperation? If I'm working on Incidents and another developer on my Team is working on Resources, we don't have to worry about stepping on each other's toes and making sure that we are careful with TFS check-ins and check-outs. TFS normally makes this fairly painless, but not always. Sometimes the process of merging code that I'm checking in with code that another developer has checked in, does not go easily. I'd rather avoid it.  This way, my co-worker checks out the MessageResourceProcessor.cs file and I check out the MessageIncidentProcessor.cs file ... and we're both happy!!  =0)</p><p>I hope this post has given you some good ideas ... Happy Coding!  =0)</p>Bonniehttp://www.blogger.com/profile/11241425687786973525noreply@blogger.com2tag:blogger.com,1999:blog-33753991.post-55279706318305230792020-01-31T16:36:00.000-08:002020-02-28T15:55:58.782-08:00Merge Tables And Sum Columns<p>A question on the MSDN Forums prompted me to write the topic of today's blog post. The question, in a nutshell, involved how to merge data into one DataTable from two DataTables originating from two different sources and provide a sum of a common column in that new DataTable.</p><p>I will illustrate the concept with an example from my fictitious ride-sharing system that I used in two previous blog posts:</p><p><a href="https://geek-goddess-bonnie.blogspot.com/2019/09/parsing-data-with-metadata.html">https://geek-goddess-bonnie.blogspot.com/2019/09/parsing-data-with-metadata.html</a> <br />
<a href="https://geek-goddess-bonnie.blogspot.com/2019/12/create-dictionary-using-linq.html">https://geek-goddess-bonnie.blogspot.com/2019/12/create-dictionary-using-linq.html</a></p><p>The RideShare application maintains a database containing all the cars for each of the Companies that subscribe to their Service. One of the Services that this RideShare application provides is to keep track of the mileage that each car has driven every day in its database.  Each Car Company will send information to RideShare from every car that the company operates. This is a very simplistic version of this hypothetical system, because in reality we'd keep a lot more information (such as a TripID, probably a begin/end time for each Trip, etc.).  But since I'm only using this for an example of how to "Merge and Sum", I'm not going to bother with all that. I'll only be interested in the TripMileage and the TripDate (since we'll be summing all Mileages for each Date for each Car).</p><p>Let's say that RideShare is a startup company and currently only has two Customers, GeeksRide and UberGeeks. The XML for the DataSet that RideShare has retrieved from its database for today's trips, looks like this:</p><div id="codeSnippetWrapper"> <pre id="codeSnippet" style="border-top-style: none; overflow: visible; font-size: 10pt; font-family: 'Courier New', courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #e8d8b7"><span style="color: #0000ff"><</span><span style="color: #800000">RideShareOwnerDataSet</span><span style="color: #0000ff">></span><br /> <span style="color: #0000ff"><</span><span style="color: #800000">CompanyInfo</span><span style="color: #0000ff">></span><br /> <span style="color: #0000ff"><</span><span style="color: #800000">CarCompanyID</span><span style="color: #0000ff">></span>1<span style="color: #0000ff"></</span><span style="color: #800000">CarCompanyID</span><span style="color: #0000ff">></span><br /> <span style="color: #0000ff"><</span><span style="color: #800000">CarCompany</span><span style="color: #0000ff">></span>GeeksRide<span style="color: #0000ff"></</span><span style="color: #800000">CarCompany</span><span style="color: #0000ff">></span><br /> <span style="color: #0000ff"></</span><span style="color: #800000">CompanyInfo</span><span style="color: #0000ff">></span><br /> <span style="color: #0000ff"><</span><span style="color: #800000">CompanyInfo</span><span style="color: #0000ff">></span><br /> <span style="color: #0000ff"><</span><span style="color: #800000">CarCompanyID</span><span style="color: #0000ff">></span>2<span style="color: #0000ff"></</span><span style="color: #800000">CarCompanyID</span><span style="color: #0000ff">></span><br /> <span style="color: #0000ff"><</span><span style="color: #800000">CarCompany</span><span style="color: #0000ff">></span>UberGeek<span style="color: #0000ff"></</span><span style="color: #800000">CarCompany</span><span style="color: #0000ff">></span><br /> <span style="color: #0000ff"></</span><span style="color: #800000">CompanyInfo</span><span style="color: #0000ff">></span><br /> <span style="color: #0000ff"><</span><span style="color: #800000">CarInfo</span><span style="color: #0000ff">></span><br /> <span style="color: #0000ff"><</span><span style="color: #800000">CarNumberID</span><span style="color: #0000ff">></span>1<span style="color: #0000ff"></</span><span style="color: #800000">CarNumberID</span><span style="color: #0000ff">></span><br /> <span style="color: #0000ff"><</span><span style="color: #800000">CarCompanyID</span><span style="color: #0000ff">></span>1<span style="color: #0000ff"></</span><span style="color: #800000">CarCompanyID</span><span style="color: #0000ff">></span><br /> <span style="color: #0000ff"><</span><span style="color: #800000">CarNumber</span><span style="color: #0000ff">></span>C001<span style="color: #0000ff"></</span><span style="color: #800000">CarNumber</span> <span style="color: #0000ff">></span><br /> <span style="color: #0000ff"><</span><span style="color: #800000">TripMileage</span><span style="color: #0000ff">></span>111.1<span style="color: #0000ff"></</span><span style="color: #800000">TripMileage</span> <span style="color: #0000ff">></span><br /> <span style="color: #0000ff"><</span><span style="color: #800000">TripDate</span><span style="color: #0000ff">></span>2019-01-31<span style="color: #0000ff"></</span><span style="color: #800000">TripDate</span> <span style="color: #0000ff">></span><br /> <span style="color: #0000ff"></</span><span style="color: #800000">CarInfo</span><span style="color: #0000ff">></span><br /> <span style="color: #0000ff"><</span><span style="color: #800000">CarInfo</span><span style="color: #0000ff">></span><br /> <span style="color: #0000ff"><</span><span style="color: #800000">CarNumberID</span><span style="color: #0000ff">></span>1<span style="color: #0000ff"></</span><span style="color: #800000">CarNumberID</span><span style="color: #0000ff">></span><br /> <span style="color: #0000ff"><</span><span style="color: #800000">CarCompanyID</span><span style="color: #0000ff">></span>2<span style="color: #0000ff"></</span><span style="color: #800000">CarCompanyID</span><span style="color: #0000ff">></span><br /> <span style="color: #0000ff"><</span><span style="color: #800000">CarNumber</span><span style="color: #0000ff">></span>C201<span style="color: #0000ff"></</span><span style="color: #800000">CarNumber</span> <span style="color: #0000ff">></span><br /> <span style="color: #0000ff"><</span><span style="color: #800000">TripMileage</span><span style="color: #0000ff">></span>121.1<span style="color: #0000ff"></</span><span style="color: #800000">TripMileage</span> <span style="color: #0000ff">></span><br /> <span style="color: #0000ff"><</span><span style="color: #800000">TripDate</span><span style="color: #0000ff">></span>2019-01-31<span style="color: #0000ff"></</span><span style="color: #800000">TripDate</span> <span style="color: #0000ff">></span><br /> <span style="color: #0000ff"></</span><span style="color: #800000">CarInfo</span><span style="color: #0000ff">></span><br /> <span style="color: #0000ff"><</span><span style="color: #800000">CarInfo</span><span style="color: #0000ff">></span><br /> <span style="color: #0000ff"><</span><span style="color: #800000">CarNumberID</span><span style="color: #0000ff">></span>2<span style="color: #0000ff"></</span><span style="color: #800000">CarNumberID</span><span style="color: #0000ff">></span><br /> <span style="color: #0000ff"><</span><span style="color: #800000">CarCompanyID</span><span style="color: #0000ff">></span>2<span style="color: #0000ff"></</span><span style="color: #800000">CarCompanyID</span><span style="color: #0000ff">></span><br /> <span style="color: #0000ff"><</span><span style="color: #800000">CarNumber</span><span style="color: #0000ff">></span>C202<span style="color: #0000ff"></</span><span style="color: #800000">CarNumber</span> <span style="color: #0000ff">></span><br /> <span style="color: #0000ff"><</span><span style="color: #800000">TripMileage</span><span style="color: #0000ff">></span>222.2<span style="color: #0000ff"></</span><span style="color: #800000">TripMileage</span> <span style="color: #0000ff">></span><br /> <span style="color: #0000ff"><</span><span style="color: #800000">TripDate</span><span style="color: #0000ff">></span>2019-01-31<span style="color: #0000ff"></</span><span style="color: #800000">TripDate</span> <span style="color: #0000ff">></span><br /> <span style="color: #0000ff"></</span><span style="color: #800000">CarInfo</span><span style="color: #0000ff">></span><br /> <span style="color: #0000ff"><</span><span style="color: #800000">CarInfo</span><span style="color: #0000ff">></span><br /> <span style="color: #0000ff"><</span><span style="color: #800000">CarNumberID</span><span style="color: #0000ff">></span>3<span style="color: #0000ff"></</span><span style="color: #800000">CarNumberID</span><span style="color: #0000ff">></span><br /> <span style="color: #0000ff"><</span><span style="color: #800000">CarCompanyID</span><span style="color: #0000ff">></span>2<span style="color: #0000ff"></</span><span style="color: #800000">CarCompanyID</span><span style="color: #0000ff">></span><br /> <span style="color: #0000ff"><</span><span style="color: #800000">CarNumber</span><span style="color: #0000ff">></span>C203<span style="color: #0000ff"></</span><span style="color: #800000">CarNumber</span> <span style="color: #0000ff">></span><br /> <span style="color: #0000ff"><</span><span style="color: #800000">TripMileage</span><span style="color: #0000ff">></span>333.3<span style="color: #0000ff"></</span><span style="color: #800000">TripMileage</span> <span style="color: #0000ff">></span><br /> <span style="color: #0000ff"><</span><span style="color: #800000">TripDate</span><span style="color: #0000ff">></span>2019-01-31<span style="color: #0000ff"></</span><span style="color: #800000">TripDate</span> <span style="color: #0000ff">></span><br /> <span style="color: #0000ff"></</span><span style="color: #800000">CarInfo</span><span style="color: #0000ff">></span><br /><span style="color: #0000ff"></</span><span style="color: #800000">RideShareOwnerDataSet</span><span style="color: #0000ff">></span><br /></pre></div><p>During the course of the day, RideShare receives data from it's two customers (perhaps after every trip, or perhaps at intervals during the day ... that's totally up to the Customers as to when they send data to RideShare). So, let's say that RideShare receives data from UberGeek. It looks like this:</p><div id="codeSnippetWrapper"> <pre id="codeSnippet" style="border-top-style: none; overflow: visible; font-size: 10pt; font-family: 'Courier New', courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #e8d8b7"><span style="color: #0000ff"><</span><span style="color: #800000">RideShareOwnerDataSet</span><span style="color: #0000ff">></span><br /> <span style="color: #0000ff"><</span><span style="color: #800000">CompanyInfo</span><span style="color: #0000ff">></span><br /> <span style="color: #0000ff"><</span><span style="color: #800000">CarCompanyID</span><span style="color: #0000ff">></span>2<span style="color: #0000ff"></</span><span style="color: #800000">CarCompanyID</span><span style="color: #0000ff">></span><br /> <span style="color: #0000ff"><</span><span style="color: #800000">CarCompany</span><span style="color: #0000ff">></span>UberGeek<span style="color: #0000ff"></</span><span style="color: #800000">CarCompany</span><span style="color: #0000ff">></span><br /> <span style="color: #0000ff"></</span><span style="color: #800000">CompanyInfo</span> <span style="color: #0000ff">></span><br /> <span style="color: #0000ff"><</span><span style="color: #800000">CarInfo</span><span style="color: #0000ff">></span><br /> <span style="color: #0000ff"><</span><span style="color: #800000">CarNumberID</span><span style="color: #0000ff">></span>2<span style="color: #0000ff"></</span><span style="color: #800000">CarNumberID</span><span style="color: #0000ff">></span><br /> <span style="color: #0000ff"><</span><span style="color: #800000">CarCompanyID</span><span style="color: #0000ff">></span>2<span style="color: #0000ff"></</span><span style="color: #800000">CarCompanyID</span><span style="color: #0000ff">></span><br /> <span style="color: #0000ff"><</span><span style="color: #800000">CarNumber</span><span style="color: #0000ff">></span>C202<span style="color: #0000ff"></</span><span style="color: #800000">CarNumber</span> <span style="color: #0000ff">></span><br /> <span style="color: #0000ff"><</span><span style="color: #800000">TripMileage</span><span style="color: #0000ff">></span>22.2<span style="color: #0000ff"></</span><span style="color: #800000">TripMileage</span> <span style="color: #0000ff">></span><br /> <span style="color: #0000ff"><</span><span style="color: #800000">TripDate</span><span style="color: #0000ff">></span>2019-01-31<span style="color: #0000ff"></</span><span style="color: #800000">TripDate</span> <span style="color: #0000ff">></span><br /> <span style="color: #0000ff"></</span><span style="color: #800000">CarInfo</span><span style="color: #0000ff">></span><br /> <span style="color: #0000ff"><</span><span style="color: #800000">CarInfo</span><span style="color: #0000ff">></span><br /> <span style="color: #0000ff"><</span><span style="color: #800000">CarNumberID</span><span style="color: #0000ff">></span>4<span style="color: #0000ff"></</span><span style="color: #800000">CarNumberID</span><span style="color: #0000ff">></span><br /> <span style="color: #0000ff"><</span><span style="color: #800000">CarCompanyID</span><span style="color: #0000ff">></span>2<span style="color: #0000ff"></</span><span style="color: #800000">CarCompanyID</span><span style="color: #0000ff">></span><br /> <span style="color: #0000ff"><</span><span style="color: #800000">CarNumber</span><span style="color: #0000ff">></span>C204<span style="color: #0000ff"></</span><span style="color: #800000">CarNumber</span> <span style="color: #0000ff">></span><br /> <span style="color: #0000ff"><</span><span style="color: #800000">TripMileage</span><span style="color: #0000ff">></span>42.2<span style="color: #0000ff"></</span><span style="color: #800000">TripMileage</span> <span style="color: #0000ff">></span><br /> <span style="color: #0000ff"><</span><span style="color: #800000">TripDate</span><span style="color: #0000ff">></span>2019-01-31<span style="color: #0000ff"></</span><span style="color: #800000">TripDate</span> <span style="color: #0000ff">></span><br /> <span style="color: #0000ff"></</span><span style="color: #800000">CarInfo</span><span style="color: #0000ff">></span><br /><span style="color: #0000ff"></</span><span style="color: #800000">RideShareOwnerDataSet</span><span style="color: #0000ff">></span><br /></pre></div><p>UberGeek is reporting the mileage from two different cars, one (ID 2) is already in the database and the other (ID 4) is a brand new car. We need to merge this new information with the data from the database, and add up all mileage, so that each car has only one row that contains the total mileage for this day so far.</p><p>I decided to try my hand at doing this with LINQ. <br />
<br />I chose to simply create a new DataSet/DataTable to hold the revised data, rather than updating the existing DataSet (since a new DataTable was the original problem posted to the Forum). </p><p>I am also using a Typed DataSet as it is much better in terms of usability for just about anything you want to do with DataSets. Since I'm providing the XML above, it can easily be used to create a Typed DataSet. See the second link to my blog above (Create Dictionary Using LINQ), and scroll down the section "XML Data and a Typed DataSet) for info about how to do this if you don't already know.</p><p>So, let's start looking at code. I took the above XML and saved it to two different XML files and then read them into two DataSets.</p><div id="codeSnippetWrapper"> <pre id="codeSnippet" style="border-top-style: none; overflow: visible; font-size: 10pt; font-family: 'Courier New', courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #e8d8b7">RideShareOwnerDataSet dsRideShare = <span style="color: #0000ff">new</span> RideShareOwnerDataSet();<br />RideShareOwnerDataSet dsCustomerRide = <span style="color: #0000ff">new</span> RideShareOwnerDataSet();<br /> <br />dsRideShare.ReadXml(<span style="color: #006080">"RideShareFromDatabase.xml"</span>);<br />dsCustomerRide.ReadXml(<span style="color: #006080">"RideShareFromCustomer.xml"</span>);<br /> <br />var dsResult = <span style="color: #0000ff">this</span>.MergeAndSumData(dsRideShare, dsCustomerRide); <br /></pre></div><p>You can then use the dsResult DataSet to update your database, however that is beyond the scope of this post.</p><p>Here is the MergeAndSumData() method:</p><div id="codeSnippetWrapper"> <pre id="codeSnippet" style="border-top-style: none; overflow: visible; font-size: 10pt; font-family: 'Courier New', courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #e8d8b7"><span style="color: #0000ff">private</span> RideShareOwnerDataSet MergeAndSumData(RideShareOwnerDataSet dsDatabase, RideShareOwnerDataSet dsCustomer)<br />{<br /> RideShareOwnerDataSet dsResult = <span style="color: #0000ff">new</span> RideShareOwnerDataSet();<br /> RideShareOwnerDataSet.CarInfoDataTable dtResult = dsResult.CarInfo;<br /> <br /> <span style="color: #008000">// First, we Merge the CarInfo DataTables from both DataSets into one DataTable.</span><br /> var dtMerged = dsDatabase.CarInfo.Copy() <span style="color: #0000ff">as</span> RideShareOwnerDataSet.CarInfoDataTable;<br /> dtMerged.Merge(dsCustomer.CarInfo);<br /> <br /> var test =<br /> dtMerged.Where(row => !row.IsTripDateNull())<br /> .GroupBy(row => <span style="color: #0000ff">new</span> { row.CarCompanyID, row.CarNumberID, row.CarNumber, row.TripDate }, (key, group) => <span style="color: #0000ff">new</span><br /> {<br /> key.CarNumberID,<br /> key.CarCompanyID,<br /> key.CarNumber,<br /> key.TripDate,<br /> <span style="color: #008000">// And Sum the Mileages for each car here:</span><br /> TripMileage = group.Sum(s => s.TripMileage) <br /> })<br /> .Select(row => dsResult.CarInfo.LoadDataRow(<span style="color: #0000ff">new</span> <span style="color: #0000ff">object</span>[]<br /> {<br /> row.CarNumberID,<br /> row.CarCompanyID,<br /> row.CarNumber,<br /> row.TripDate,<br /> row.TripMileage<br /> }, LoadOption.Upsert))<br /> .ToList();<br /> <br /> <span style="color: #008000">// Since we are returning the entire DataSet, we might as well put the original CompanyInfo data in its DataTable</span><br /> <span style="color: #008000">// in case the calling method might need to have both DataTables contain data.</span><br /> dsResult.CompanyInfo.Merge(dsDatabase.CompanyInfo);<br /> <br /> <span style="color: #0000ff">return</span> dsResult;<br />}<br /></pre></div><p>A couple of things to note about the above method:<br />
</p><ul> <li>We're using a .ToList() at the end of the LINQ query, but we really don't care about the List (which ends up in the variable called test) ... it's used simply because the act of running .ToList() then executes the query. Until then, LINQ hasn't done anything and dsResult.CarInfo will still be empty.<br />
</li>
<li>The order that the column variables are used in the LoadDataRow() is important. It corresponds to the order that columns are defined in the DataTable.<br />
</li>
</ul><p>That's all there is to it. And while the LINQ looks fairly straightforward now that I've written it, I had not used LoadDataRow much in the past, and never had I used it in a LINQ query! So, this post took a lot of experimenting and Googling. Which is why it took me so long to finish writing it!!  </p><p>And now you know the rest of the story.  </p><p>Happy Coding!!  =0)</p>Bonniehttp://www.blogger.com/profile/11241425687786973525noreply@blogger.com0tag:blogger.com,1999:blog-33753991.post-50626205372507332502019-12-30T22:11:00.000-08:002019-12-30T22:11:47.611-08:00Create a Dictionary using LINQDictionaries are useful to use in your code, and occasionally I need to look up a word I don't know!! Oh wait ... that's a different kind of dictionary! ;0)<br />
<br />
Say that you have some data that you'd like to put into a Dictionary. One reason for using a Dictionary might be to make it easy to process one group of items at a time. Another reason might be for easily finding data based on the dictionary key. The data could be in a file or maybe it's been retrieved from TCP or from a database. It doesn't matter. Data that might look something like this:<br />
<br />
<div id="codeSnippetWrapper">
<pre id="codeSnippet" style="background-color: #e8d8b7; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: "courier new" , "courier" , monospace; font-size: 10pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;">MyFirstGroup:
item1
MySecondGroup:
item2
item3
item4</pre>
</div>
<br />
Or maybe delimited data, like this:<br />
<br />
<div id="codeSnippetWrapper">
<pre id="codeSnippet" style="background-color: #e8d8b7; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: "courier new" , "courier" , monospace; font-size: 10pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;">|CARCOMPANY=GeeksRide|CARNUMBER=C121|CARNUMBER=C122|CARCOMPANY=UberGeek|CARNUMBER=C133|</pre>
</div>
<br />
The above string may look a bit familiar to regular readers of my blog. It's similar to data coming from a fictional ride-sharing system that I "invented" in order to write this blog post about parsing data: <a href="https://geek-goddess-bonnie.blogspot.com/2019/09/parsing-data-with-metadata.html" target="_blank">https://geek-goddess-bonnie.blogspot.com/2019/09/parsing-data-with-metadata.html</a><br />
<br />
Oh, and how about XML? Here's some XML (in this case, representing a DataSet):<br />
<br />
<div id="codeSnippetWrapper">
<pre id="codeSnippet" style="background-color: #e8d8b7; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: "courier new" , "courier" , monospace; font-size: 10pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"><span style="color: blue;"><</span><span style="color: maroon;">RideShareOwnerDataSet</span><span style="color: blue;">></span>
<span style="color: blue;"><</span><span style="color: maroon;">CompanyInfo</span><span style="color: blue;">></span>
<span style="color: blue;"><</span><span style="color: maroon;">CarCompanyID</span><span style="color: blue;">></span>1<span style="color: blue;"></</span><span style="color: maroon;">CarCompanyID</span><span style="color: blue;">></span>
<span style="color: blue;"><</span><span style="color: maroon;">CarCompany</span><span style="color: blue;">></span>GeeksRide<span style="color: blue;"></</span><span style="color: maroon;">CarCompany</span><span style="color: blue;">></span>
<span style="color: blue;"></</span><span style="color: maroon;">CompanyInfo</span><span style="color: blue;">></span>
<span style="color: blue;"><</span><span style="color: maroon;">CompanyInfo</span><span style="color: blue;">></span>
<span style="color: blue;"><</span><span style="color: maroon;">CarCompanyID</span><span style="color: blue;">></span>2<span style="color: blue;"></</span><span style="color: maroon;">CarCompanyID</span><span style="color: blue;">></span>
<span style="color: blue;"><</span><span style="color: maroon;">CarCompany</span><span style="color: blue;">></span>UberGeek<span style="color: blue;"></</span><span style="color: maroon;">CarCompany</span><span style="color: blue;">></span>
<span style="color: blue;"></</span><span style="color: maroon;">CompanyInfo</span><span style="color: blue;">></span>
<span style="color: blue;"><</span><span style="color: maroon;">CarInfo</span><span style="color: blue;">></span>
<span style="color: blue;"><</span><span style="color: maroon;">CarNumberID</span><span style="color: blue;">></span>1<span style="color: blue;"></</span><span style="color: maroon;">CarNumberID</span><span style="color: blue;">></span>
<span style="color: blue;"> <</span><span style="color: maroon;">CarCompanyID</span><span style="color: blue;">></span>1<span style="color: blue;"></</span><span style="color: maroon;">CarCompanyID</span><span style="color: blue;">></span>
<span style="color: blue;"> <</span><span style="color: maroon;">CarNumber</span><span style="color: blue;">></span>C121<span style="color: blue;"></</span><span style="color: maroon;">CarNumber</span><span style="color: blue;">></span>
<span style="color: blue;"> </</span><span style="color: maroon;">CarInfo</span><span style="color: blue;">></span>
<span style="color: blue;"> <</span><span style="color: maroon;">CarInfo</span><span style="color: blue;">></span>
<span style="color: blue;"> <</span><span style="color: maroon;">CarNumberID</span><span style="color: blue;">></span>2<span style="color: blue;"></<span style="-webkit-text-stroke-width: 0px; color: blue; font-family: "courier new","courier",monospace; font-size: 13.33px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; white-space: pre; word-spacing: 0px;"></span><span style="-webkit-text-stroke-width: 0px; color: maroon; font-family: "courier new","courier",monospace; font-size: 13.33px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; white-space: pre; word-spacing: 0px;">CarNumberID</span><span style="-webkit-text-stroke-width: 0px; color: blue; font-family: "courier new","courier",monospace; font-size: 13.33px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; white-space: pre; word-spacing: 0px;"></span></span><span style="color: blue;">></span>
<span style="color: blue;"> <</span><span style="color: maroon;">CarCompanyID</span><span style="color: blue;">></span>1<span style="color: blue;"></</span><span style="color: maroon;">CarCompanyID</span><span style="color: blue;">></span>
<span style="color: blue;"> <</span><span style="color: maroon;">CarNumber</span><span style="color: blue;">></span>C122<span style="color: blue;"></</span><span style="color: maroon;">CarNumber</span><span style="color: blue;">></span>
<span style="color: blue;"> </</span><span style="color: maroon;">CarInfo</span><span style="color: blue;">></span>
<span style="color: blue;"> <</span><span style="color: maroon;">CarInfo</span><span style="color: blue;">></span>
<span style="color: blue;"> <</span><span style="color: maroon;">CarNumberID</span><span style="color: blue;">></span>3<span style="color: blue;"></<span style="-webkit-text-stroke-width: 0px; color: blue; font-family: "courier new","courier",monospace; font-size: 13.33px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; white-space: pre; word-spacing: 0px;"><span style="-webkit-text-stroke-width: 0px; color: blue; font-size: 13.33px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; white-space: pre; word-spacing: 0px;"></span><span style="-webkit-text-stroke-width: 0px; color: maroon; font-size: 13.33px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; white-space: pre; word-spacing: 0px;">CarNumberID</span><span style="-webkit-text-stroke-width: 0px; color: blue; font-size: 13.33px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; white-space: pre; word-spacing: 0px;"></span></span><span style="-webkit-text-stroke-width: 0px; color: blue; font-family: "courier new","courier",monospace; font-size: 13.33px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; white-space: pre; word-spacing: 0px;"></span></span><span style="color: blue;">></span>
<span style="color: blue;"> <</span><span style="color: maroon;">CarCompanyID</span><span style="color: blue;">></span>2<span style="color: blue;"></</span><span style="color: maroon;">CarCompanyID</span><span style="color: blue;">></span>
<span style="color: blue;"> <</span><span style="color: maroon;">CarNumber</span><span style="color: blue;">></span>C133<span style="color: blue;"></</span><span style="color: maroon;">CarNumber</span><span style="color: blue;">></span>
<span style="color: blue;"> </</span><span style="color: maroon;">CarInfo</span><span style="color: blue;">></span>
<span style="color: blue;"></</span><span style="color: maroon;">RideShareOwnerDataSet</span><span style="color: blue;">></span></pre>
<br />
Of course, depending on the data, the processing in your application could be quite different. So, let's take a look at how we would handle these three very different types of data.</div>
<br />
In all of these examples, I am making use of LINQ syntax to create the Dictionary. In two of these examples, I make use of LINQ's .Aggregate() function. Here is a good link that explains how .Aggregate works:<br />
<br />
<a href="https://stackoverflow.com/questions/7105505/linq-aggregate-algorithm-explained" target="_blank">https://stackoverflow.com/questions/7105505/linq-aggregate-algorithm-explained</a><br />
<br />
<h3>
Lines of Data</h3>
For this first example, I put the data into a text file, that I called GroupAndItem.txt. We can use the File.ReadLines() to read each line of data and utilize the .Aggregate() function of LINQ to make it pretty easy to dump this data into a Dictionary:<br />
<br />
<div id="codeSnippetWrapper">
<pre id="codeSnippet" style="background-color: #e8d8b7; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: "courier new" , "courier" , monospace; font-size: 10pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"><span style="color: blue;">string</span> key = <span style="color: #006080;">""</span>;
var dcSectionItems = File.ReadLines(<span style="color: #006080;">"GroupAndItem.txt"</span>)
.Aggregate(<span style="color: blue;">new</span> Dictionary<<span style="color: blue;">string</span>, List<<span style="color: blue;">string</span>>>(), (a, s) => {
var i = s.IndexOf(<span style="color: #006080;">':'</span>);
<span style="color: blue;"> if</span> (i < 0) a[key].Add(s);
<span style="color: blue;"> else</span> a[(key = s.Substring(0, i))] = <span style="color: blue;">new</span> List<<span style="color: blue;">string</span>>();
<span style="color: blue;">
return</span> a;
});</pre>
<br />
<br /></div>
And then we can show the data by iterating the Dictionary utilizing Console.WriteLine() for display.<br />
<br />
<div id="codeSnippetWrapper">
<pre id="codeSnippet" style="background-color: #e8d8b7; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: "courier new" , "courier" , monospace; font-size: 10pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"><span style="color: blue;">foreach</span> (var kvp <span style="color: blue;">in</span> dcSectionItems)
{
Console.WriteLine(<span style="color: #006080;">"{0}:"</span>, kvp.Key); <span style="color: green;">// section name</span>
<span style="color: blue;"> foreach</span> (var item <span style="color: blue;">in</span> kvp.Value)
{
Console.WriteLine(<span style="color: #006080;">"\t{0}"</span>, item); <span style="color: green;">// item name</span>
}
}</pre>
<br />
<br /></div>
<h3>
Delimited Data</h3>
Rather than reading from a file this time, I simply used a string to hold the pipe-delimited data. In practice, this data could be coming in from TCP, a web service or a database. Notice that GeeksRide has 2 cars, while UberGeek has only one. Again, I make use of the LINQ .Aggregate() function to create the Dictionary: <br />
<br />
<div id="codeSnippetWrapper">
<pre id="codeSnippet" style="background-color: #e8d8b7; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: "courier new" , "courier" , monospace; font-size: 10pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"><span style="color: blue;">string</span> pipeCompanyCars = <span style="color: #006080;">"|CARCOMPANY=GeeksRide|CARNUMBER=C121|CARNUMBER=C122|CARCOMPANY=UberGeek|CARNUMBER=C133|"</span>;
<span style="color: blue;">
string</span>[] entries = pipeCompanyCars.Split(<span style="color: blue;">new</span> <span style="color: blue;">char</span>[] { <span style="color: #006080;">'|'</span> }, StringSplitOptions.RemoveEmptyEntries);
key = <span style="color: #006080;">""</span>;
var dcCompanyCars = entries
.Aggregate(<span style="color: blue;">new</span> Dictionary<<span style="color: blue;">string</span>, List<<span style="color: blue;">string</span>>>(), (a, s) => {
var i = s.IndexOf(<span style="color: #006080;">"CARCOMPANY="</span>);
<span style="color: blue;"> if</span> (i >= 0) a[(key = s.Substring(11))] = <span style="color: blue;">new</span> List<<span style="color: blue;">string</span>>();
<span style="color: blue;"> else</span>
{
i = s.IndexOf(<span style="color: #006080;">"CARNUMBER="</span>);
<span style="color: blue;"> if</span> (i >= 0) a[key].Add(s.Substring(10));
}
<span style="color: blue;"> return</span> a;
});</pre>
<br />
<br /></div>
And, again, show the data in the Dictionary the same way:<br />
<br />
<div id="codeSnippetWrapper">
<pre id="codeSnippet" style="background-color: #e8d8b7; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: "courier new" , "courier" , monospace; font-size: 10pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"><span style="color: blue;">foreach</span> (var kvp <span style="color: blue;">in</span> dcCompanyCars)
{
Console.WriteLine(<span style="color: #006080;">"{0}:"</span>, kvp.Key); <span style="color: green;">// car company name</span>
<span style="color: blue;"> foreach</span> (var item <span style="color: blue;">in</span> kvp.Value)
{
Console.WriteLine(<span style="color: #006080;">"\t{0}"</span>, item); <span style="color: green;">// car numbers</span>
}
}</pre>
<br />
<br /></div>
<br />
<h3>
XML Data</h3>
<br />
I almost exclusively utilize XML with DataSets. Most of the time, the DataSets in my applications are Typed DataSets. But, every once in a while, I'll use a plain old DataSet for one-time uses. My first example with XML data here will simply use a plain old DataSet. <br />
<br />
The XML I'm using could have just as easily been retrieved from an .xml file to fill the DataSet using ds.ReadXml("FileName.xml"), but here I am filling the DataSet from an XML string. Here's the string and the code to read it into a DataSet :<br />
<br />
<div id="codeSnippetWrapper">
<pre id="codeSnippet" style="background-color: #e8d8b7; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: "courier new" , "courier" , monospace; font-size: 10pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"><span style="color: blue;">string</span> xmlCompanyCars =
<span style="color: #006080;"> "<RideShareOwnerDataSet>"</span> +
<span style="color: #006080;"><span style="-webkit-text-stroke-width: 0px; background-color: #e8d8b7; color: #006080; display: inline !important; float: none; font-family: "courier new","courier",monospace; font-size: 13.33px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; white-space: pre; word-spacing: 0px;"> </span>"<CompanyInfo>"</span> +
<span style="color: #006080;"><span style="-webkit-text-stroke-width: 0px; background-color: #e8d8b7; color: #006080; display: inline !important; float: none; font-family: "courier new","courier",monospace; font-size: 13.33px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; white-space: pre; word-spacing: 0px;"> <span style="-webkit-text-stroke-width: 0px; background-color: #e8d8b7; color: #006080; display: inline !important; float: none; font-family: "courier new","courier",monospace; font-size: 13.33px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; white-space: pre; word-spacing: 0px;"> </span></span>"<CarCompanyID>1</CarCompanyID>"</span> +
<span style="color: #006080;"><span style="-webkit-text-stroke-width: 0px; background-color: #e8d8b7; color: #006080; display: inline !important; float: none; font-family: "courier new","courier",monospace; font-size: 13.33px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; white-space: pre; word-spacing: 0px;"> <span style="-webkit-text-stroke-width: 0px; background-color: #e8d8b7; color: #006080; display: inline !important; float: none; font-family: "courier new","courier",monospace; font-size: 13.33px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; white-space: pre; word-spacing: 0px;"> </span></span>"<CarCompany>GeeksRide</CarCompany>"</span> +
<span style="color: #006080;"><span style="-webkit-text-stroke-width: 0px; background-color: #e8d8b7; color: #006080; display: inline !important; float: none; font-family: "courier new","courier",monospace; font-size: 13.33px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; white-space: pre; word-spacing: 0px;"> </span>"</CompanyInfo >"</span> +
<span style="color: #006080;"><span style="-webkit-text-stroke-width: 0px; background-color: #e8d8b7; color: #006080; display: inline !important; float: none; font-family: "courier new","courier",monospace; font-size: 13.33px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; white-space: pre; word-spacing: 0px;"> </span>"<CompanyInfo>"</span> +
<span style="color: #006080;"><span style="-webkit-text-stroke-width: 0px; background-color: #e8d8b7; color: #006080; display: inline !important; float: none; font-family: "courier new","courier",monospace; font-size: 13.33px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; white-space: pre; word-spacing: 0px;"> <span style="-webkit-text-stroke-width: 0px; background-color: #e8d8b7; color: #006080; display: inline !important; float: none; font-family: "courier new","courier",monospace; font-size: 13.33px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; white-space: pre; word-spacing: 0px;"> </span></span>"<CarCompanyID>2</CarCompanyID>"</span> +
<span style="color: #006080;"><span style="-webkit-text-stroke-width: 0px; background-color: #e8d8b7; color: #006080; display: inline !important; float: none; font-family: "courier new","courier",monospace; font-size: 13.33px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; white-space: pre; word-spacing: 0px;"> <span style="-webkit-text-stroke-width: 0px; background-color: #e8d8b7; color: #006080; display: inline !important; float: none; font-family: "courier new","courier",monospace; font-size: 13.33px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; white-space: pre; word-spacing: 0px;"> </span></span>"<CarCompany>UberGeek</CarCompany>"</span> +
<span style="color: #006080;"><span style="-webkit-text-stroke-width: 0px; background-color: #e8d8b7; color: #006080; display: inline !important; float: none; font-family: "courier new","courier",monospace; font-size: 13.33px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; white-space: pre; word-spacing: 0px;"> </span>"</CompanyInfo >"</span> +
<span style="color: #006080;"><span style="-webkit-text-stroke-width: 0px; background-color: #e8d8b7; color: #006080; display: inline !important; float: none; font-family: "courier new","courier",monospace; font-size: 13.33px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; white-space: pre; word-spacing: 0px;"> <span style="-webkit-text-stroke-width: 0px; background-color: #e8d8b7; color: #006080; display: inline !important; float: none; font-family: "courier new","courier",monospace; font-size: 13.33px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; white-space: pre; word-spacing: 0px;"> </span></span>"<CarInfo>"</span> +
<span style="color: #006080;"><span style="-webkit-text-stroke-width: 0px; background-color: #e8d8b7; color: #006080; display: inline !important; float: none; font-family: "courier new","courier",monospace; font-size: 13.33px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; white-space: pre; word-spacing: 0px;"> <span style="-webkit-text-stroke-width: 0px; background-color: #e8d8b7; color: #006080; display: inline !important; float: none; font-family: "courier new","courier",monospace; font-size: 13.33px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; white-space: pre; word-spacing: 0px;"> </span></span>"<CarNumberID>1</CarNumberID>"</span> +
<span style="color: #006080;"><span style="-webkit-text-stroke-width: 0px; background-color: #e8d8b7; color: #006080; display: inline !important; float: none; font-family: "courier new","courier",monospace; font-size: 13.33px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; white-space: pre; word-spacing: 0px;"> <span style="-webkit-text-stroke-width: 0px; background-color: #e8d8b7; color: #006080; display: inline !important; float: none; font-family: "courier new","courier",monospace; font-size: 13.33px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; white-space: pre; word-spacing: 0px;"> </span></span>"<CarCompanyID>1</CarCompanyID>"</span> +
<span style="color: #006080;"><span style="-webkit-text-stroke-width: 0px; background-color: #e8d8b7; color: #006080; display: inline !important; float: none; font-family: "courier new","courier",monospace; font-size: 13.33px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; white-space: pre; word-spacing: 0px;"> <span style="-webkit-text-stroke-width: 0px; background-color: #e8d8b7; color: #006080; display: inline !important; float: none; font-family: "courier new","courier",monospace; font-size: 13.33px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; white-space: pre; word-spacing: 0px;"> </span></span>"<CarNumber>C121 </CarNumber >"</span> +
<span style="color: #006080;"><span style="-webkit-text-stroke-width: 0px; background-color: #e8d8b7; color: #006080; display: inline !important; float: none; font-family: "courier new","courier",monospace; font-size: 13.33px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; white-space: pre; word-spacing: 0px;"> </span>"</CarInfo>"</span> +
<span style="color: #006080;"><span style="-webkit-text-stroke-width: 0px; background-color: #e8d8b7; color: #006080; display: inline !important; float: none; font-family: "courier new","courier",monospace; font-size: 13.33px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; white-space: pre; word-spacing: 0px;"> </span>"<CarInfo>"</span> +
<span style="color: #006080;"><span style="-webkit-text-stroke-width: 0px; background-color: #e8d8b7; color: #006080; display: inline !important; float: none; font-family: "courier new","courier",monospace; font-size: 13.33px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; white-space: pre; word-spacing: 0px;"> <span style="-webkit-text-stroke-width: 0px; background-color: #e8d8b7; color: #006080; display: inline !important; float: none; font-family: "courier new","courier",monospace; font-size: 13.33px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; white-space: pre; word-spacing: 0px;"> </span></span>"<CarNumberID>2</CarNumberID>"</span> +
<span style="color: #006080;"><span style="-webkit-text-stroke-width: 0px; background-color: #e8d8b7; color: #006080; display: inline !important; float: none; font-family: "courier new","courier",monospace; font-size: 13.33px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; white-space: pre; word-spacing: 0px;"> <span style="-webkit-text-stroke-width: 0px; background-color: #e8d8b7; color: #006080; display: inline !important; float: none; font-family: "courier new","courier",monospace; font-size: 13.33px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; white-space: pre; word-spacing: 0px;"> </span></span>"<CarCompanyID>1</CarCompanyID>"</span> +
<span style="color: #006080;"><span style="-webkit-text-stroke-width: 0px; background-color: #e8d8b7; color: #006080; display: inline !important; float: none; font-family: "courier new","courier",monospace; font-size: 13.33px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; white-space: pre; word-spacing: 0px;"> <span style="-webkit-text-stroke-width: 0px; background-color: #e8d8b7; color: #006080; display: inline !important; float: none; font-family: "courier new","courier",monospace; font-size: 13.33px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; white-space: pre; word-spacing: 0px;"> </span></span>"<CarNumber>C122 </CarNumber >"</span> +
<span style="color: #006080;"><span style="-webkit-text-stroke-width: 0px; background-color: #e8d8b7; color: #006080; display: inline !important; float: none; font-family: "courier new","courier",monospace; font-size: 13.33px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; white-space: pre; word-spacing: 0px;"> </span>"</CarInfo>"</span> +
<span style="color: #006080;"><span style="-webkit-text-stroke-width: 0px; background-color: #e8d8b7; color: #006080; display: inline !important; float: none; font-family: "courier new","courier",monospace; font-size: 13.33px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; white-space: pre; word-spacing: 0px;"> </span>"<CarInfo>"</span> +
<span style="color: #006080;"><span style="-webkit-text-stroke-width: 0px; background-color: #e8d8b7; color: #006080; display: inline !important; float: none; font-family: "courier new","courier",monospace; font-size: 13.33px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; white-space: pre; word-spacing: 0px;"> <span style="-webkit-text-stroke-width: 0px; background-color: #e8d8b7; color: #006080; display: inline !important; float: none; font-family: "courier new","courier",monospace; font-size: 13.33px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; white-space: pre; word-spacing: 0px;"> </span></span>"<CarNumberID>3</CarNumberID>"</span> +
<span style="color: #006080;"><span style="-webkit-text-stroke-width: 0px; background-color: #e8d8b7; color: #006080; display: inline !important; float: none; font-family: "courier new","courier",monospace; font-size: 13.33px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; white-space: pre; word-spacing: 0px;"> <span style="-webkit-text-stroke-width: 0px; background-color: #e8d8b7; color: #006080; display: inline !important; float: none; font-family: "courier new","courier",monospace; font-size: 13.33px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; white-space: pre; word-spacing: 0px;"> </span></span>"<CarCompanyID>2</CarCompanyID>"</span> +
<span style="color: #006080;"><span style="-webkit-text-stroke-width: 0px; background-color: #e8d8b7; color: #006080; display: inline !important; float: none; font-family: "courier new","courier",monospace; font-size: 13.33px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; white-space: pre; word-spacing: 0px;"> <span style="-webkit-text-stroke-width: 0px; background-color: #e8d8b7; color: #006080; display: inline !important; float: none; font-family: "courier new","courier",monospace; font-size: 13.33px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; white-space: pre; word-spacing: 0px;"> </span></span>"<CarNumber>C133 </CarNumber >"</span> +
<span style="color: #006080;"><span style="-webkit-text-stroke-width: 0px; background-color: #e8d8b7; color: #006080; display: inline !important; float: none; font-family: "courier new","courier",monospace; font-size: 13.33px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; white-space: pre; word-spacing: 0px;"> </span>"</CarInfo>"</span> +
<span style="color: #006080;"><span style="-webkit-text-stroke-width: 0px; background-color: #e8d8b7; color: #006080; display: inline !important; float: none; font-family: "courier new","courier",monospace; font-size: 13.33px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; white-space: pre; word-spacing: 0px;"> </span>"</RideShareOwnerDataSet >"</span>;
DataSet ds = <span style="color: blue;">new</span> DataSet();
StringReader sr = <span style="color: blue;">new</span> StringReader(xmlCompanyCars);
ds.ReadXml(sr, XmlReadMode.InferSchema);</pre>
<br />
If you use XML strings to fill DataSet a lot, instead of the above code, I recommend creating a handy Extension method, like the following:</div>
<br />
<div id="codeSnippetWrapper">
<pre id="codeSnippet" style="background-color: #e8d8b7; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: "courier new" , "courier" , monospace; font-size: 10pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"><span style="color: green;">// Extension methods for DataSet:</span>
<span style="color: blue;">public</span> <span style="color: blue;">static</span> <span style="color: blue;">void</span> FillWithXml(<span style="color: blue;">this</span> DataSet ds, <span style="color: blue;">string</span> XML)
{
<span style="-webkit-text-stroke-width: 0px; background-color: #e8d8b7; color: #006080; display: inline !important; float: none; font-family: "courier new","courier",monospace; font-size: 13.33px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; white-space: pre; word-spacing: 0px;"> </span>StringReader sr = <span style="color: blue;">new</span> StringReader(XML);
<span style="-webkit-text-stroke-width: 0px; background-color: #e8d8b7; color: #006080; display: inline !important; float: none; font-family: "courier new","courier",monospace; font-size: 13.33px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; white-space: pre; word-spacing: 0px;"> </span>ds.ReadXml(sr, XmlReadMode.InferSchema);
<span style="-webkit-text-stroke-width: 0px; background-color: #e8d8b7; color: #006080; display: inline !important; float: none; font-family: "courier new","courier",monospace; font-size: 13.33px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; white-space: pre; word-spacing: 0px;"> </span>ds.AcceptChanges();
}</pre>
<br />
Here, you'd use it like this:</div>
<br />
<div id="codeSnippetWrapper">
<pre id="codeSnippet" style="background-color: #e8d8b7; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: "courier new" , "courier" , monospace; font-size: 10pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;">ds.FillWithXml(xmlCompanyCars);</pre>
<br />
Here's the rest of the code for this XML example:</div>
<br />
<div id="codeSnippetWrapper">
<pre id="codeSnippet" style="background-color: #e8d8b7; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: "courier new" , "courier" , monospace; font-size: 10pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"><span style="color: green;">// Now let's get that DataSet into a Dictionary!</span>
<span style="color: green;">// We do need a "dummy" DataTable for this to work</span>
DataTable dt = <span style="color: blue;">new</span> DataTable();
dt.Columns.Add(<span style="color: #006080;">"CarCompany"</span>);
dt.Columns.Add(<span style="color: #006080;">"CarNumber"</span>);
var dcCompanyCarsFromDataSet = ds.Tables[0].AsEnumerable()
<span style="-webkit-text-stroke-width: 0px; background-color: #e8d8b7; color: #006080; display: inline !important; float: none; font-family: "courier new","courier",monospace; font-size: 13.33px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; white-space: pre; word-spacing: 0px;"> </span>.Join(ds.Tables[1].AsEnumerable(),
<span style="-webkit-text-stroke-width: 0px; background-color: #e8d8b7; color: #006080; display: inline !important; float: none; font-family: "courier new","courier",monospace; font-size: 13.33px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; white-space: pre; word-spacing: 0px;"> <span style="-webkit-text-stroke-width: 0px; background-color: #e8d8b7; color: #006080; display: inline !important; float: none; font-family: "courier new","courier",monospace; font-size: 13.33px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; white-space: pre; word-spacing: 0px;"> </span></span>rowCompany => rowCompany.Field<<span style="color: blue;">string</span>>(<span style="color: #006080;">"CarCompanyID"</span>), rowCar => rowCar.Field<<span style="color: blue;">string</span>>(<span style="color: #006080;">"CarCompanyID"</span>),
<span style="-webkit-text-stroke-width: 0px; background-color: #e8d8b7; color: #006080; display: inline !important; float: none; font-family: "courier new","courier",monospace; font-size: 13.33px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; white-space: pre; word-spacing: 0px;"> <span style="-webkit-text-stroke-width: 0px; background-color: #e8d8b7; color: #006080; display: inline !important; float: none; font-family: "courier new","courier",monospace; font-size: 13.33px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; white-space: pre; word-spacing: 0px;"> </span></span>(rowCompany, rowCar) =>
<span style="-webkit-text-stroke-width: 0px; background-color: #e8d8b7; color: #006080; display: inline !important; float: none; font-family: "courier new","courier",monospace; font-size: 13.33px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; white-space: pre; word-spacing: 0px;"> <span style="-webkit-text-stroke-width: 0px; background-color: #e8d8b7; color: #006080; display: inline !important; float: none; font-family: "courier new","courier",monospace; font-size: 13.33px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; white-space: pre; word-spacing: 0px;"> </span></span>{
<span style="-webkit-text-stroke-width: 0px; background-color: #e8d8b7; color: #006080; display: inline !important; float: none; font-family: "courier new","courier",monospace; font-size: 13.33px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; white-space: pre; word-spacing: 0px;"> <span style="-webkit-text-stroke-width: 0px; background-color: #e8d8b7; color: #006080; display: inline !important; float: none; font-family: "courier new","courier",monospace; font-size: 13.33px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; white-space: pre; word-spacing: 0px;"> <span style="-webkit-text-stroke-width: 0px; background-color: #e8d8b7; color: #006080; display: inline !important; float: none; font-family: "courier new","courier",monospace; font-size: 13.33px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; white-space: pre; word-spacing: 0px;"> </span></span></span>DataRow newRow = dt.NewRow();
<span style="-webkit-text-stroke-width: 0px; background-color: #e8d8b7; color: #006080; display: inline !important; float: none; font-family: "courier new","courier",monospace; font-size: 13.33px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; white-space: pre; word-spacing: 0px;"> <span style="-webkit-text-stroke-width: 0px; background-color: #e8d8b7; color: #006080; display: inline !important; float: none; font-family: "courier new","courier",monospace; font-size: 13.33px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; white-space: pre; word-spacing: 0px;"> <span style="-webkit-text-stroke-width: 0px; background-color: #e8d8b7; color: #006080; display: inline !important; float: none; font-family: "courier new","courier",monospace; font-size: 13.33px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; white-space: pre; word-spacing: 0px;"> </span></span></span>newRow[<span style="color: #006080;">"CarCompany"</span>] = rowCompany.Field<<span style="color: blue;">string</span>>(<span style="color: #006080;">"CarCompany"</span>);
<span style="-webkit-text-stroke-width: 0px; background-color: #e8d8b7; color: #006080; display: inline !important; float: none; font-family: "courier new","courier",monospace; font-size: 13.33px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; white-space: pre; word-spacing: 0px;"> <span style="-webkit-text-stroke-width: 0px; background-color: #e8d8b7; color: #006080; display: inline !important; float: none; font-family: "courier new","courier",monospace; font-size: 13.33px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; white-space: pre; word-spacing: 0px;"> <span style="-webkit-text-stroke-width: 0px; background-color: #e8d8b7; color: #006080; display: inline !important; float: none; font-family: "courier new","courier",monospace; font-size: 13.33px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; white-space: pre; word-spacing: 0px;"> </span></span></span>newRow[<span style="color: #006080;">"CarNumber"</span>] = rowCar.Field<<span style="color: blue;">string</span>>(<span style="color: #006080;">"CarNumber"</span>);
<span style="color: blue;"><span style="-webkit-text-stroke-width: 0px; background-color: #e8d8b7; color: #006080; display: inline !important; float: none; font-family: "courier new","courier",monospace; font-size: 13.33px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; white-space: pre; word-spacing: 0px;"> <span style="-webkit-text-stroke-width: 0px; background-color: #e8d8b7; color: #006080; display: inline !important; float: none; font-family: "courier new","courier",monospace; font-size: 13.33px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; white-space: pre; word-spacing: 0px;"> <span style="-webkit-text-stroke-width: 0px; background-color: #e8d8b7; color: #006080; display: inline !important; float: none; font-family: "courier new","courier",monospace; font-size: 13.33px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; white-space: pre; word-spacing: 0px;"> </span></span></span>return</span> newRow;
<span style="-webkit-text-stroke-width: 0px; background-color: #e8d8b7; color: #006080; display: inline !important; float: none; font-family: "courier new","courier",monospace; font-size: 13.33px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; white-space: pre; word-spacing: 0px;"> <span style="-webkit-text-stroke-width: 0px; background-color: #e8d8b7; color: #006080; display: inline !important; float: none; font-family: "courier new","courier",monospace; font-size: 13.33px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; white-space: pre; word-spacing: 0px;"> </span></span>})
<span style="-webkit-text-stroke-width: 0px; background-color: #e8d8b7; color: #006080; display: inline !important; float: none; font-family: "courier new","courier",monospace; font-size: 13.33px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; white-space: pre; word-spacing: 0px;"> </span>.GroupBy(rowKey => rowKey.Field<<span style="color: blue;">string</span>>(<span style="color: #006080;">"CarCompany"</span>), rowValue => rowValue.Field<<span style="color: blue;">string</span>>(<span style="color: #006080;">"CarNumber"</span>))
<span style="-webkit-text-stroke-width: 0px; background-color: #e8d8b7; color: #006080; display: inline !important; float: none; font-family: "courier new","courier",monospace; font-size: 13.33px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; white-space: pre; word-spacing: 0px;"> </span>.ToDictionary(rowKey => rowKey.Key, rowValue => rowValue.ToList());</pre>
<br />
Notice the syntax for accessing the columns of data in LINQ with a regular DataSet. You *<strong>must</strong>* specify the type of data with .Field<string>("ColumnName"). There is no way around this (unless you use a Typed DataSet ... more on that in my final example). Also notice that I did *<strong>NOT</strong>* use the .Aggregate() function here. I could not figure out how to do it that way (and I doubt that it can be done, but if any of my faithful readers want to give it a try ... go for it! Leave me a comment if you figure it out). But the .GroupBy() and the .ToDictionary() work just fine!</div>
<br />
One more thing that you may notice, and that is the CarCompanyID and the CarNumberID. In the XML, you can clearly see that they are numbers, most likely an int. But, because I read the XML in to a regular DataSet (and even though I used XmlReadMode.InferSchema), it did not infer that those numbers were anything but a string. Which is OK in this case, but just something to be aware of. We could have added Tables and Columns to that DataSet before we read in the XML data, but why bother? If I wanted that, I'd use a Typed DataSet.<br />
<br />
And use a similar foreach, as before, to iterate the Dictionary:<br />
<br />
<div id="codeSnippetWrapper">
<pre id="codeSnippet" style="background-color: #e8d8b7; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: "courier new" , "courier" , monospace; font-size: 10pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"><span style="color: blue;">foreach</span> (var kvp <span style="color: blue;">in</span> dcCompanyCarsFromDataSet)
{
<span style="-webkit-text-stroke-width: 0px; background-color: #e8d8b7; color: #006080; display: inline !important; float: none; font-family: "courier new","courier",monospace; font-size: 13.33px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; white-space: pre; word-spacing: 0px;"> </span>Console.WriteLine(<span style="color: #006080;">"{0}:"</span>, kvp.Key); <span style="color: green;">// car company name</span>
<span style="color: blue;"><span style="-webkit-text-stroke-width: 0px; background-color: #e8d8b7; color: #006080; display: inline !important; float: none; font-family: "courier new","courier",monospace; font-size: 13.33px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; white-space: pre; word-spacing: 0px;"> </span>foreach</span> (var item <span style="color: blue;">in</span> kvp.Value)
<span style="-webkit-text-stroke-width: 0px; background-color: #e8d8b7; color: #006080; display: inline !important; float: none; font-family: "courier new","courier",monospace; font-size: 13.33px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; white-space: pre; word-spacing: 0px;"> </span>{
<span style="-webkit-text-stroke-width: 0px; background-color: #e8d8b7; color: #006080; display: inline !important; float: none; font-family: "courier new","courier",monospace; font-size: 13.33px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; white-space: pre; word-spacing: 0px;"> <span style="-webkit-text-stroke-width: 0px; background-color: #e8d8b7; color: #006080; display: inline !important; float: none; font-family: "courier new","courier",monospace; font-size: 13.33px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; white-space: pre; word-spacing: 0px;"> </span></span>Console.WriteLine(<span style="color: #006080;">"\t{0}"</span>, item); <span style="color: green;">// car numbers</span>
<span style="-webkit-text-stroke-width: 0px; background-color: #e8d8b7; color: #006080; display: inline !important; float: none; font-family: "courier new","courier",monospace; font-size: 13.33px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; white-space: pre; word-spacing: 0px;"> </span>}
}</pre>
</div>
<br />
<h3>
XML Data and a Typed DataSet</h3>
To experiment with Typed DataSets if you've never used them, since we have available XML, you can use ds.WriteSchema("RideShareOwnerDataSet.xsd") method to create an .xsd file. Then add the .xsd file to your solution and run the MSDataSetGenerator to create a Typed DataSet. Here's one of my blog posts about how to do that:<br />
<br />
<a href="https://geek-goddess-bonnie.blogspot.com/2010/04/create-xsd.html" target="_blank">https://geek-goddess-bonnie.blogspot.com/2010/04/create-xsd.html</a><br />
<br />
The relevant (to this post) part of that blog post is this:<br />
<br />
<em><u>Simply add that .xsd to your DataSet project, right-click on the .xsd and choose "Run Custom Tool". This is what will generate the Typed DataSet for you. If that option doesn't show up in your context menu, choose Properties instead and type "MSDataSetGenerator" in the Custom Tool property. After that, any time you make a change to the .xsd in the XML Editor and save the change, the Typed DataSet gets regenerated.</u></em><br />
<br />
I edited the .xsd to change the datatypes of the IDs to an int, instead of a string. Go ahead and do that if you'd like to.<br />
<br />
<div id="codeSnippetWrapper">
<pre id="codeSnippet" style="background-color: #e8d8b7; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: "courier new" , "courier" , monospace; font-size: 10pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"><span style="color: green;">// We still need a "dummy" table</span>
DataTable dt = <span style="color: blue;">new</span> DataTable();
dt.Columns.Add(<span style="color: #006080;">"CarCompany"</span>);
dt.Columns.Add(<span style="color: #006080;">"CarNumber"</span>);
var dcCompanyCarsFromTypedDataSet = dsRideShareOwner.CompanyInfo
<span style="-webkit-text-stroke-width: 0px; background-color: #e8d8b7; color: #006080; display: inline !important; float: none; font-family: "courier new","courier",monospace; font-size: 13.33px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; white-space: pre; word-spacing: 0px;"> </span>.Join(dsRideShareOwner.CarInfo,
<span style="color: green;"><span style="-webkit-text-stroke-width: 0px; background-color: #e8d8b7; color: #006080; display: inline !important; float: none; font-family: "courier new","courier",monospace; font-size: 13.33px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; white-space: pre; word-spacing: 0px;"><span style="-webkit-text-stroke-width: 0px; background-color: #e8d8b7; color: #006080; display: inline !important; float: none; font-family: "courier new","courier",monospace; font-size: 13.33px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; white-space: pre; word-spacing: 0px;"> </span> </span>// Notice that we can use the Typed syntax for the columns now</span>
<span style="-webkit-text-stroke-width: 0px; background-color: #e8d8b7; color: #006080; display: inline !important; float: none; font-family: "courier new","courier",monospace; font-size: 13.33px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; white-space: pre; word-spacing: 0px;"> <span style="-webkit-text-stroke-width: 0px; background-color: #e8d8b7; color: #006080; display: inline !important; float: none; font-family: "courier new","courier",monospace; font-size: 13.33px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; white-space: pre; word-spacing: 0px;"> </span></span>rowCompany => rowCompany.CarCompanyID, rowCar => rowCar.CarCompanyID,
<span style="-webkit-text-stroke-width: 0px; background-color: #e8d8b7; color: #006080; display: inline !important; float: none; font-family: "courier new","courier",monospace; font-size: 13.33px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; white-space: pre; word-spacing: 0px;"> <span style="-webkit-text-stroke-width: 0px; background-color: #e8d8b7; color: #006080; display: inline !important; float: none; font-family: "courier new","courier",monospace; font-size: 13.33px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; white-space: pre; word-spacing: 0px;"> </span></span>(rowCompany, rowCar) =>
<span style="-webkit-text-stroke-width: 0px; background-color: #e8d8b7; color: #006080; display: inline !important; float: none; font-family: "courier new","courier",monospace; font-size: 13.33px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; white-space: pre; word-spacing: 0px;"> <span style="-webkit-text-stroke-width: 0px; background-color: #e8d8b7; color: #006080; display: inline !important; float: none; font-family: "courier new","courier",monospace; font-size: 13.33px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; white-space: pre; word-spacing: 0px;"> </span></span>{
<span style="color: green;"><span style="-webkit-text-stroke-width: 0px; background-color: #e8d8b7; color: #006080; display: inline !important; float: none; font-family: "courier new","courier",monospace; font-size: 13.33px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; white-space: pre; word-spacing: 0px;"> <span style="-webkit-text-stroke-width: 0px; background-color: #e8d8b7; color: #006080; display: inline !important; float: none; font-family: "courier new","courier",monospace; font-size: 13.33px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; white-space: pre; word-spacing: 0px;"> <span style="-webkit-text-stroke-width: 0px; background-color: #e8d8b7; color: #006080; display: inline !important; float: none; font-family: "courier new","courier",monospace; font-size: 13.33px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; white-space: pre; word-spacing: 0px;"> </span></span></span>// Use the Typed syntax here too</span>
<span style="-webkit-text-stroke-width: 0px; background-color: #e8d8b7; color: #006080; display: inline !important; float: none; font-family: "courier new","courier",monospace; font-size: 13.33px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; white-space: pre; word-spacing: 0px;"> <span style="-webkit-text-stroke-width: 0px; background-color: #e8d8b7; color: #006080; display: inline !important; float: none; font-family: "courier new","courier",monospace; font-size: 13.33px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; white-space: pre; word-spacing: 0px;"> <span style="-webkit-text-stroke-width: 0px; background-color: #e8d8b7; color: #006080; display: inline !important; float: none; font-family: "courier new","courier",monospace; font-size: 13.33px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; white-space: pre; word-spacing: 0px;"> </span></span></span>DataRow newRow = dt.NewRow();
<span style="-webkit-text-stroke-width: 0px; background-color: #e8d8b7; color: #006080; display: inline !important; float: none; font-family: "courier new","courier",monospace; font-size: 13.33px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; white-space: pre; word-spacing: 0px;"> <span style="-webkit-text-stroke-width: 0px; background-color: #e8d8b7; color: #006080; display: inline !important; float: none; font-family: "courier new","courier",monospace; font-size: 13.33px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; white-space: pre; word-spacing: 0px;"> <span style="-webkit-text-stroke-width: 0px; background-color: #e8d8b7; color: #006080; display: inline !important; float: none; font-family: "courier new","courier",monospace; font-size: 13.33px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; white-space: pre; word-spacing: 0px;"> </span></span></span>newRow[<span style="color: #006080;">"CarCompany"</span>] = rowCompany.CarCompany;
<span style="-webkit-text-stroke-width: 0px; background-color: #e8d8b7; color: #006080; display: inline !important; float: none; font-family: "courier new","courier",monospace; font-size: 13.33px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; white-space: pre; word-spacing: 0px;"> <span style="-webkit-text-stroke-width: 0px; background-color: #e8d8b7; color: #006080; display: inline !important; float: none; font-family: "courier new","courier",monospace; font-size: 13.33px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; white-space: pre; word-spacing: 0px;"> <span style="-webkit-text-stroke-width: 0px; background-color: #e8d8b7; color: #006080; display: inline !important; float: none; font-family: "courier new","courier",monospace; font-size: 13.33px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; white-space: pre; word-spacing: 0px;"> </span></span></span>newRow[<span style="color: #006080;">"CarNumber"</span>] = rowCar.CarNumber;
<span style="color: blue;"><span style="-webkit-text-stroke-width: 0px; background-color: #e8d8b7; color: #006080; display: inline !important; float: none; font-family: "courier new","courier",monospace; font-size: 13.33px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; white-space: pre; word-spacing: 0px;"> <span style="-webkit-text-stroke-width: 0px; background-color: #e8d8b7; color: #006080; display: inline !important; float: none; font-family: "courier new","courier",monospace; font-size: 13.33px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; white-space: pre; word-spacing: 0px;"> <span style="-webkit-text-stroke-width: 0px; background-color: #e8d8b7; color: #006080; display: inline !important; float: none; font-family: "courier new","courier",monospace; font-size: 13.33px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; white-space: pre; word-spacing: 0px;"> </span></span></span>return</span> newRow;
<span style="-webkit-text-stroke-width: 0px; background-color: #e8d8b7; color: #006080; display: inline !important; float: none; font-family: "courier new","courier",monospace; font-size: 13.33px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; white-space: pre; word-spacing: 0px;"> <span style="-webkit-text-stroke-width: 0px; background-color: #e8d8b7; color: #006080; display: inline !important; float: none; font-family: "courier new","courier",monospace; font-size: 13.33px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; white-space: pre; word-spacing: 0px;"> </span></span>})
<span style="-webkit-text-stroke-width: 0px; background-color: #e8d8b7; color: #006080; display: inline !important; float: none; font-family: "courier new","courier",monospace; font-size: 13.33px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; white-space: pre; word-spacing: 0px;"> </span><span style="color: green;">// The GroupBy still needs to use the untyped syntax, because these Rows are from the untyped "dummy" DataTable</span>
<span style="-webkit-text-stroke-width: 0px; background-color: #e8d8b7; color: #006080; display: inline !important; float: none; font-family: "courier new","courier",monospace; font-size: 13.33px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; white-space: pre; word-spacing: 0px;"> </span>.GroupBy(rowKey => rowKey.Field<<span style="color: blue;">string</span>>(<span style="color: #006080;">"CarCompany"</span>), rowValue => rowValue.Field<<span style="color: blue;">string</span>>(<span style="color: #006080;">"CarNumber"</span>))
<span style="-webkit-text-stroke-width: 0px; background-color: #e8d8b7; color: #006080; display: inline !important; float: none; font-family: "courier new","courier",monospace; font-size: 13.33px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; white-space: pre; word-spacing: 0px;"> </span>.ToDictionary(rowKey => rowKey.Key, rowValue => rowValue.ToList());</pre>
<br />
You'll notice that the LINQ syntax is quite different for Typed DataSet versus non-typed. We do *not* have to specify Field<string> for the columns we are using, since we can use the Typed property to access the column data: rowCompany.CarCompanyID, instead of rowCompany.Field<string>("CarCompanyID"). Much cleaner.</div>
<br />
And, as before, iterate the Dictionary:<br />
<br />
<div id="codeSnippetWrapper">
<pre id="codeSnippet" style="background-color: #e8d8b7; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: "courier new" , "courier" , monospace; font-size: 10pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"><span style="color: blue;">foreach</span> (var kvp <span style="color: blue;">in</span> dcCompanyCarsFromTypedDataSet)
{
<span style="-webkit-text-stroke-width: 0px; background-color: #e8d8b7; color: #006080; display: inline !important; float: none; font-family: "courier new","courier",monospace; font-size: 13.33px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; white-space: pre; word-spacing: 0px;"> </span>Console.WriteLine(<span style="color: #006080;">"{0}:"</span>, kvp.Key); <span style="color: green;">// car company name</span>
<span style="color: blue;"><span style="-webkit-text-stroke-width: 0px; background-color: #e8d8b7; color: #006080; display: inline !important; float: none; font-family: "courier new","courier",monospace; font-size: 13.33px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; white-space: pre; word-spacing: 0px;"> </span>foreach</span> (var item <span style="color: blue;">in</span> kvp.Value)
<span style="-webkit-text-stroke-width: 0px; background-color: #e8d8b7; color: #006080; display: inline !important; float: none; font-family: "courier new","courier",monospace; font-size: 13.33px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; white-space: pre; word-spacing: 0px;"> </span>{
<span style="-webkit-text-stroke-width: 0px; background-color: #e8d8b7; color: #006080; display: inline !important; float: none; font-family: "courier new","courier",monospace; font-size: 13.33px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; white-space: pre; word-spacing: 0px;"> <span style="-webkit-text-stroke-width: 0px; background-color: #e8d8b7; color: #006080; display: inline !important; float: none; font-family: "courier new","courier",monospace; font-size: 13.33px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; white-space: pre; word-spacing: 0px;"> </span></span>Console.WriteLine(<span style="color: #006080;">"\t{0}"</span>, item); <span style="color: green;">// car numbers</span>
<span style="-webkit-text-stroke-width: 0px; background-color: #e8d8b7; color: #006080; display: inline !important; float: none; font-family: "courier new","courier",monospace; font-size: 13.33px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; white-space: pre; word-spacing: 0px;"> </span>}
}</pre>
<br />
So, that's it. It's been a fun experiment for me as I wrote this blog post. I hope that you, Dear Reader, can put this to good use.</div>
<br />
Happy Coding!! =0)Bonniehttp://www.blogger.com/profile/11241425687786973525noreply@blogger.com0tag:blogger.com,1999:blog-33753991.post-44350866928062827022019-11-23T17:36:00.000-08:002019-11-23T17:36:50.562-08:00Missing A Project/Assembly ReferenceI have several solutions that need to reference assemblies in another solution. For many years, I used assembly/DLL references, because the other solution is our "Core Framework" solution, and I didn't want other programmers messing around with our framework classes. At another company that I worked at, that happened all too often. Then I'd have to go back in and fix all the bugs they put into <b>*my*</b> Framework classes!!! Without the projects being in the solution, it wasn't as likely that someone would go in and mess around with those classes.<br />
<br />
But assembly references can cause issues too (such as outdated assemblies and problems with automated Builds, to name just two). So I finally relented and started adding the necessary Core Framework projects to each new solution and then any new projects for that solution could have project references to the Framework instead of assembly references. All was well for a while, but then <b>several months ago, the problems began</b>. <br />
<br />
In a new solution that included Framework projects, I started getting "red squigglies" everywhere for one particular Framework project, showing the usual error when I moused over: <b>"blah blah blah does not exist (are you missing an assembly reference?)"</b>. None of the other Framework projects have had problems, only this one. The using directive for that project's namespace had the squiggly and any class that was in that namespace also had squigglies. And Intellisense wouldn't work for any method calls, etc. And here's the weird part: with all those errors, everything still built fine on my computer (and on the Build server)!!<br />
<br />
I'm using Visual Studio 2017. I was at version 15.8.something, which was not the latest version. So, I thought that I needed to update (because nobody else had the problem), so I'm now at the latest version (15.9.17) and it did NOT help! =0(<br />
<br />
Googling for "Visual Studio 2017 missing project references" offered all kinds of suggestions. Clean the solution and build. Clean the solution and rebuild. Delete the obj folder and reopen VS. Add dependency references. Remove the project and add it back in. Remove the reference and add it back in. And many more that I don't even remember right now ... none worked!!! <br />
<br />
I would periodically, drop my search for a fix and continue working for a while. Until the fact that I had no Intellisense started driving me nuts again and I'd search some more. This went on like this for months. Until I finally found something that worked!!!<br />
<br />
<b>Someone on some Forum (StackOverflow, I think) suggested unloading the problem project.</b> The red squigglies suddenly disappeared! And Intellisense was back! The project reference is still there (because unloading doesn't affect the .sln at all, which is nice because I don't have to worry about checking it into source control, since there's no change, and it won't affect any of the other developers).<br />
<br />
All you have to do is right-click the offending project in the Solution Explorer and choose "Unload Project" (it's down towards the bottom of the menu). The project remains displayed in the solution, but is marked as "(unavailable)". If you need to, you can always right-click it again and choose "Reload Project".<br />
<br />
I have no idea why this works (I tried to Google to find an answer to that question), but after trying off-and-on for months to find a solution to my problem, I'm not going to "look a gift horse in the mouth", as they say!<br />
<br />
Now I can continue with my Happy Coding! =0)<br />
<br />
<br />
<br />
<br />
Bonniehttp://www.blogger.com/profile/11241425687786973525noreply@blogger.com2tag:blogger.com,1999:blog-33753991.post-28568176392601018622019-11-03T11:19:00.001-08:002019-11-03T11:19:17.117-08:00Printing Your WinFormMany developers still use WinForms (Windows Forms), and I frequently see questions on the Forums about how to print your Forms. I think this type of question might be asked by developers wanting to have a printed version of their forms, with data filled in, to maybe show to a prospective customer. Or, maybe the application contains an Invoice Form with customer data to be printed to include with a customer purchase. I'm sure there are lots of reasons for wanting this functionality.<br />
<br />
I have seen many examples of how to do this when Googling, and some work better than others. Some of the issues I've seen include not taking into account multiple monitors ... it only works with your main laptop/tablet screen, or the image ends up spanning your laptop screen plus all of your monitors (I use two external monitors ... imagine three screens crammed onto one page)! Not exactly what you're looking for, is it?<br />
<br />
After a bit of trial-and-error, cobbling together bits and pieces from various other sources that I've found with Google, I've come up with this. It works pretty well, I think. Call this PrintForm() method from a button click:<br />
<br />
<div id="codeSnippetWrapper"> <pre id="codeSnippet" style="border-top-style: none; overflow: visible; font-size: 10pt; font-family: 'Courier New', courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #e8d8b7"><span style="color: #0000ff">public</span> <span style="color: #0000ff">void</span> PrintScreen()<br />{<br /> System.Drawing.Printing.PrintDocument oDoc = <span style="color: #0000ff">new</span> System.Drawing.Printing.PrintDocument();<br /> oDoc.PrintPage += <span style="color: #0000ff">new</span> System.Drawing.Printing.PrintPageEventHandler(oDoc_PrintPage);<br /> PrintDialog pd = <span style="color: #0000ff">new</span> PrintDialog();<br /> pd.PrinterSettings = <span style="color: #0000ff">new</span> System.Drawing.Printing.PrinterSettings();<br /> pd.Document = oDoc;<br /> oDoc.DefaultPageSettings.Landscape = <span style="color: #0000ff">true</span>;<br /> <br /> <span style="color: #008000">// print like this:</span><br /> <span style="color: #008000">//if (pd.ShowDialog() == DialogResult.OK)</span><br /> <span style="color: #008000">//{</span><br /> <span style="color: #008000">// oDoc.Print();</span><br /> <span style="color: #008000">//}</span><br /> <br /> <span style="color: #008000">// for now, let's just use the print preview to demonstrate</span><br /> PrintPreviewDialog ppd = <span style="color: #0000ff">new</span> PrintPreviewDialog();<br /> ppd.Document = oDoc;<br /> ppd.ShowDialog();<br />}<br /><br /></pre> </div><br />
The PrintPage EventHandler gets called for both the Print and the PrintPreviewDialog, so all the necessary code is in this event handler:<br />
<br />
<div id="codeSnippetWrapper"> <pre id="codeSnippet" style="border-top-style: none; overflow: visible; font-size: 10pt; font-family: 'Courier New', courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #e8d8b7"><span style="color: #0000ff">private</span> <span style="color: #0000ff">void</span> oDoc_PrintPage(<span style="color: #0000ff">object</span> sender, System.Drawing.Printing.PrintPageEventArgs e)<br />{<br /> <span style="color: #008000">// First, let's get the image of this running Form that we want to print</span><br /> Bitmap formBitmap = <span style="color: #0000ff">new</span> Bitmap(<span style="color: #0000ff">this</span>.Width, <span style="color: #0000ff">this</span>.Height);<br /> <span style="color: #0000ff">this</span>.DrawToBitmap(formBitmap, <span style="color: #0000ff">new</span> Rectangle(0, 0, <span style="color: #0000ff">this</span>.Width, <span style="color: #0000ff">this</span>.Height));<br /> <br /> <span style="color: #008000">// for clearer images</span><br /> e.Graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;<br /> e.Graphics.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAliasGridFit;<br /> e.Graphics.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;<br /> <br /> <span style="color: #008000">// this bit of code is needed to figure out if we need to scale the bitmap to fit the page</span><br /> <span style="color: #008000">// (there is an implicit conversion from int to float)</span><br /> <span style="color: #0000ff">float</span> neededWidth = <span style="color: #0000ff">this</span>.Width;<br /> <span style="color: #0000ff">float</span> neededHeight = <span style="color: #0000ff">this</span>.Height;<br /> <br /> <span style="color: #0000ff">float</span> availableWidth = e.PageBounds.Width;<br /> <span style="color: #0000ff">float</span> availableHeight = e.PageBounds.Height;<br /> <br /> <span style="color: #0000ff">double</span> neededRatio = neededWidth / neededHeight;<br /> <span style="color: #0000ff">double</span> availableRatio = availableWidth / availableHeight;<br /> <span style="color: #0000ff">float</span> fitRatio = 1;<br /> <br /> <span style="color: #0000ff">if</span> (neededRatio >= availableRatio)<br /> fitRatio = availableWidth / neededWidth;<br /> <span style="color: #0000ff">else</span><br /> fitRatio = availableHeight / neededHeight;<br /> <br /> <span style="color: #008000">// The Min size needs to be converted to int for the DrawImage() method.</span><br /> <span style="color: #0000ff">int</span> newWidth = Convert.ToInt32(Math.Min(neededWidth * fitRatio, availableWidth));<br /> <span style="color: #0000ff">int</span> newHeight = Convert.ToInt32(Math.Min(neededHeight * fitRatio, availableHeight));<br /> <br /> e.Graphics.DrawImage(formBitmap, 0, 0, newWidth, newHeight);<br />}</pre> </div><br />
Have fun and Happy Coding! =0)<br />
<br />
<br />
<br />
<br />
Bonniehttp://www.blogger.com/profile/11241425687786973525noreply@blogger.com0tag:blogger.com,1999:blog-33753991.post-5186392495402760392019-09-30T09:12:00.000-07:002019-09-30T09:12:03.977-07:00Parsing Data With MetadataRecently, I had worked on some parsing routines for messages received from another vendor. The messages come via TCP, but that's not relevant to this discussion. What I wanted to talk about is how a "generic" type of parsing mechanism ended up being useful for parsing data that is received in more than one format. The vendor initially only sent messages in a pipe-delimited fashion, which is how the parsing routine was originally designed. Then later, they added additional messages that were XML (which we could use to Fill a DataSet). We needed to be sure that the parsing routine would work with both types of messages, because we would still be receiving both types.<br />
<br />
Let's pretend that this example comes from a ride-sharing system (it doesn't). So we have cars and drivers and we are receiving messages about the status of each car and its location. <br />
<br />
A pipe-delimited message might come in looking like this:<br />
<br />
<div id="codeSnippetWrapper"><pre id="codeSnippet" style="border-top-style: none; overflow: visible; font-size: 10pt; font-family: 'Courier New', courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #e8d8b7"><span style="color: #006080">|CARCOMPANY=GeeksRide|CARNUMBER=C121|STATUS=Active|OPERATORID=2401|OPERATORNAME=Bonnie|STATUSDATE=5/24/2018 12:54:40 PM|LASTCOORDTIME=5/24/2018 12:54:55|PHONENBR=555-555-0430|X=-122.650345|Y=45.535772|</span></pre></div><br />
As you can see, the data is coming into my application from a hypothetical company called GeeksRide.<br />
<br />
An XML message might come in looking like this:<br />
<br />
<div id="codeSnippetWrapper"><pre id="codeSnippet" style="border-top-style: none; overflow: visible; font-size: 10pt; font-family: 'Courier New', courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #e8d8b7"><span style="color: #006080"><RideShareDataSet>
<RideShareCar>
<CarCompany>GeeksRide</CarCompany>
<CarNumber>C121</CarNumber>
<Status>Active</Status>
<X>-122.650345</X>
<Y>45.535772</Y>
<LastCoordTime>5/24/2018 12:54:55</LastCoordTime>
<StatusDate>5/24/2018 12:54:40 PM</StatusDate>
<OperatorID>2401</OperatorID>
<OperatorName>Bonnie</OperatorName>
<PhoneNBR>555-555-0430</PhoneNBR>
</RideShareCar>
</RideShareDataSet></span></pre></div><br />
For ease of comparison between the two methodologies, the XML in my example contains the same data as the pipe-delimited, although,  in reality, it could be different data and different schema (column names). In the case of this hypothetical ride-sharing system, we could be receiving messages from many different companies with different data and different schema. Each type of message in your application can have different metadata, if necessary, to correspond to the various companies schemas.<br />
<br />
What does this metadata look like? Very, very similar to the pipe-delimited data! Whether the message is coming in as pipe-delimited or XML, this pipe-delimited metadata can be used for either! Here's an example of metadata that can be used to process the data coming in with the above schema:<br />
<br />
<div id="codeSnippetWrapper"><pre id="codeSnippet" style="border-top-style: none; overflow: visible; font-size: 10pt; font-family: 'Courier New', courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #e8d8b7"><span style="color: #006080">|CARCOMPANY=Company|CARNUMBER=CarID|EVENTNO=TripID|STATUS=Status|OPERATORID=DriverID|OPERATORNAME=DriverName|RADIOID=|EVENTTYPE=|STATUSDATE=LastStatusDateTime|LOCATION=LocationName|X=Longitude|Y=Latitude|ADDRESS=Address|DIRECTION=heading|SPEED=speed|LASTCOORDTIME=LastGPSDateTime|PHONENBR=PhoneNumber|</span></pre></div><br />
Let me explain what this means: each pair of values between the pipes,  |XX=YY|, correspond to the name of the data coming in (XX) and the name of the column in our ride-sharing system's DataSet/DataTable (YY).  Pretty simple, right?<br />
<br />
Note that the leading and trailing pipes are optional in both the metadata and pipe-delimited input data. <br />
<br />
OK, so now some code. <br />
<br />
First, to simulate an incoming message, I'll just create pipeInput and xmlInput string variables. Like so:<br />
<br />
<div id="codeSnippetWrapper"><pre id="codeSnippet" style="border-top-style: none; overflow: visible; font-size: 10pt; font-family: 'Courier New', courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #e8d8b7"><span style="color: #0000ff">private</span> <span style="color: #0000ff">string</span> pipeInput = <span style="color: #006080">"|CARCOMPANY=GeeksRide|CARNUMBER=C121|STATUS=Active|OPERATORID=2401|OPERATORNAME=Bonnie|STATUSDATE=5/24/2018 12:54:40 PM|LASTCOORDTIME=5/24/2018 12:54:55|PHONENBR=555-555-0430|X=-122.650345|Y=45.535772|"</span>;
<span style="color: #0000ff">private</span> <span style="color: #0000ff">string</span> xmlInput =
<span style="color: #006080"> "<RideShareDataSet>"</span> +
<span style="color: #006080"> " <RideShareCar>"</span> +
<span style="color: #006080"> " <CarCompany>GeeksRide</CarCompany>"</span> +
<span style="color: #006080"> " <CarNumber>C121</CarNumber>"</span> +
<span style="color: #006080"> " <Status>Active</Status>"</span> +
<span style="color: #006080"> " <X>-122.650345</X>"</span> +
<span style="color: #006080"> " <Y>45.535772</Y>"</span> +
<span style="color: #006080"> " <LastCoordTime>5/24/2018 12:54:55</LastCoordTime>"</span> +
<span style="color: #006080"> " <StatusDate>5/24/2018 12:54:40 PM</StatusDate>"</span> +
<span style="color: #006080"> " <OperatorID>2401</OperatorID>"</span> +
<span style="color: #006080"> " <OperatorName>Bonnie</OperatorName>"</span> +
<span style="color: #006080"> " <PhoneNBR>555-555-0430</PhoneNBR>"</span> +
<span style="color: #006080"> " </RideShareCar>"</span> +
<span style="color: #006080"> "</RideShareDataSet>"</span>;</pre></div><br />
And I'll also simulate the metadata with a string variable as well. Normally you'd get the metadata from a config file or from a database:<br />
<br />
<div id="codeSnippetWrapper"><pre id="codeSnippet" style="border-top-style: none; overflow: visible; font-size: 10pt; font-family: 'Courier New', courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #e8d8b7"><span style="color: #0000ff">private</span> <span style="color: #0000ff">string</span> pipeMetadata = <span style="color: #006080">"|CARCOMPANY=Company|CARNUMBER=CarID|EVENTNO=TripID|STATUS=Status|OPERATORID=DriverID|OPERATORNAME=DriverName|RADIOID=|EVENTTYPE=|STATUSDATE=LastStatusDateTime|LOCATION=LocationName|X=Longitude|Y=Latitude|ADDRESS=Address|DIRECTION=heading|SPEED=speed|LASTCOORDTIME=LastGPSDateTime|PHONENBR=PhoneNumber|"</span>;</pre></div><br />
One more variable we'll need is a Dictionary to store the metadata in. I call it a SchemaMap:<br />
<br />
<div id="codeSnippetWrapper"><pre id="codeSnippet" style="border-top-style: none; overflow: visible; font-size: 10pt; font-family: 'Courier New', courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #e8d8b7"><span style="color: #008000">/// <summary></span>
<span style="color: #008000">/// The key is the data name of the incoming data, as defined in the Metadata (pipeMetadata)</span>
<span style="color: #008000">/// The value is the column name of the DataTable where we store the Parsed data, as defined in the Metadata</span>
<span style="color: #008000">/// </summary></span>
Dictionary<<span style="color: #0000ff">string</span>, <span style="color: #0000ff">string</span>> SchemaMap = <span style="color: #0000ff">new</span> Dictionary<<span style="color: #0000ff">string</span>, <span style="color: #0000ff">string</span>>();</pre></div><br />
To test all this, just call this Test method (you can set a breakpoint at the end and look at the two DataTables that now contain the data parsed from the two different input messages):<br />
<br />
<div id="codeSnippetWrapper"><pre id="codeSnippet" style="border-top-style: none; overflow: visible; font-size: 10pt; font-family: 'Courier New', courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #e8d8b7"><span style="color: #0000ff">public</span> <span style="color: #0000ff">void</span> TestParsingMethods()
{
<span style="color: #0000ff">this</span>.CreateSchemaMap(pipeMetadata);
DataTable dtWithPipeInput = <span style="color: #0000ff">new</span> DataTable();
<span style="color: #0000ff">this</span>.ParsePipeDelimited(dtWithPipeInput, pipeInput);
DataTable dtWithXmlInput = <span style="color: #0000ff">new</span> DataTable();
<span style="color: #0000ff">this</span>.ParseXml(dtWithXmlInput, xmlInput);
}</pre></div><br />
Let's start with the CreateSchemaMap, which is very simple. It fills the dictionary with the metadata:<br />
<br />
<div id="codeSnippetWrapper"><pre id="codeSnippet" style="border-top-style: none; overflow: visible; font-size: 10pt; font-family: 'Courier New', courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #e8d8b7"><span style="color: #0000ff">public</span> <span style="color: #0000ff">void</span> CreateSchemaMap(<span style="color: #0000ff">string</span> schema)
{
<span style="color: #0000ff">string</span>[] names = schema.Split(<span style="color: #0000ff">new</span> <span style="color: #0000ff">char</span>[] { <span style="color: #006080">'|'</span> }, StringSplitOptions.RemoveEmptyEntries);
<span style="color: #0000ff">this</span>.SchemaMap = <span style="color: #0000ff">new</span> Dictionary<<span style="color: #0000ff">string</span>, <span style="color: #0000ff">string</span>>();
<span style="color: #0000ff">for</span> (<span style="color: #0000ff">int</span> i = 0; i < names.Length; i++)
{
<span style="color: #0000ff">string</span>[] s = names[i].Split(<span style="color: #0000ff">new</span> <span style="color: #0000ff">char</span>[] { <span style="color: #006080">'='</span> }, StringSplitOptions.RemoveEmptyEntries);
<span style="color: #0000ff">if</span> (s.Length == 2)
SchemaMap.Add(s[0].ToUpper(), s[1]);
}
}</pre></div><br />
The two Parsing methods, which I'll show first, both call a common method that puts the data into the DataRow with the proper column names, based on the metadata in the SchemaMap dictionary:<br />
<br />
<div id="codeSnippetWrapper"><pre id="codeSnippet" style="border-top-style: none; overflow: visible; font-size: 10pt; font-family: 'Courier New', courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #e8d8b7"><span style="color: #0000ff">public</span> <span style="color: #0000ff">void</span> ParsePipeDelimited(DataTable dt, <span style="color: #0000ff">string</span> pipeMessage)
{
<span style="color: #008000">// If we're passed an undefined DataTable (one with no columns), we need to add string columns</span>
<span style="color: #008000">// as we have no way of accurately determining the type of data.</span>
<span style="color: #008000">// Typically, we'd already have defined a DataSet/DataTable with column datatypes.</span>
<span style="color: #0000ff">if</span> (dt.Columns.Count == 0)
<span style="color: #0000ff">foreach</span> (KeyValuePair<<span style="color: #0000ff">string</span>, <span style="color: #0000ff">string</span>> kvp <span style="color: #0000ff">in</span> <span style="color: #0000ff">this</span>.SchemaMap)
{
<span style="color: #0000ff">if</span> (dt.Columns.Contains(kvp.Value) == <span style="color: #0000ff">false</span>)
dt.Columns.Add(kvp.Value); <span style="color: #008000">// default data type is string</span>
}
<span style="color: #008000">// We'll be parsing data from the Message into this DataRow</span>
DataRow row = dt.NewRow();
dt.Rows.Add(row);
<span style="color: #0000ff">string</span>[] nameValue = pipeMessage.Split(<span style="color: #0000ff">new</span> <span style="color: #0000ff">char</span>[] { <span style="color: #006080">'|'</span> }, StringSplitOptions.RemoveEmptyEntries);
<span style="color: #0000ff">string</span> schemaKey, columnName;
<span style="color: #0000ff">for</span> (<span style="color: #0000ff">int</span> i = 0; i < nameValue.Length; i++)
{
<span style="color: #0000ff">string</span>[] s = nameValue[i].Split(<span style="color: #0000ff">new</span> <span style="color: #0000ff">char</span>[] { <span style="color: #006080">'='</span> }, StringSplitOptions.RemoveEmptyEntries);
schemaKey = s[0].ToUpper();
<span style="color: #0000ff">if</span> (s.Length == 2 && SchemaMap.ContainsKey(schemaKey))
{
columnName = <span style="color: #0000ff">this</span>.SchemaMap[schemaKey]; <span style="color: #008000">// get column name from dictionary</span>
<span style="color: #0000ff">this</span>.ParseToDataRow(row, columnName, dt, s[1]);
}
}
}
<span style="color: #0000ff">public</span> <span style="color: #0000ff">void</span> ParseXml(DataTable dtParsed, <span style="color: #0000ff">string</span> xmlMessage)
{
<span style="color: #008000">// If we're passed an undefined DataTable (one with no columns), we need to add string columns</span>
<span style="color: #008000">// as we have no way of accurately determining the type of data.</span>
<span style="color: #008000">// Typically, we'd already have defined a DataSet/DataTable with column datatypes.</span>
<span style="color: #0000ff">if</span> (dtParsed.Columns.Count == 0)
<span style="color: #0000ff">foreach</span> (KeyValuePair<<span style="color: #0000ff">string</span>, <span style="color: #0000ff">string</span>> kvp <span style="color: #0000ff">in</span> <span style="color: #0000ff">this</span>.SchemaMap)
{
<span style="color: #0000ff">if</span> (dtParsed.Columns.Contains(kvp.Value) == <span style="color: #0000ff">false</span>)
dtParsed.Columns.Add(kvp.Value); <span style="color: #008000">// default data type is string</span>
}
<span style="color: #008000">// We'll be parsing data from the Message into this DataRow</span>
DataRow row = dtParsed.NewRow();
dtParsed.Rows.Add(row);
<span style="color: #008000">// Now, let's read the XML into a DataSet:</span>
<span style="color: #008000">// I suggest making this into an Extension method, it's pretty handy to have.</span>
DataSet dsFromXml = <span style="color: #0000ff">new</span> DataSet();
StringReader sr = <span style="color: #0000ff">new</span> StringReader(xmlMessage);
dsFromXml.ReadXml(sr, XmlReadMode.InferSchema);
dsFromXml.AcceptChanges();
<span style="color: #008000">// Most likely only one Table, but just in case</span>
<span style="color: #0000ff">foreach</span> (DataTable dt <span style="color: #0000ff">in</span> dsFromXml.Tables)
{
<span style="color: #0000ff">if</span> (dt.Rows.Count == 0)
<span style="color: #0000ff">continue</span>;
DataRow rowFromXml = dt.Rows[0];
<span style="color: #0000ff">string</span> columnName;
<span style="color: #0000ff">foreach</span> (<span style="color: #0000ff">string</span> schemaKey <span style="color: #0000ff">in</span> <span style="color: #0000ff">this</span>.SchemaMap.Keys)
{
columnName = <span style="color: #0000ff">this</span>.SchemaMap[schemaKey]; <span style="color: #008000">// get column name from dictionary</span>
<span style="color: #0000ff">foreach</span> (DataColumn dcFromXml <span style="color: #0000ff">in</span> dt.Columns)
{
<span style="color: #0000ff">if</span> (dcFromXml.ColumnName.ToUpper() == schemaKey)
{
<span style="color: #0000ff">this</span>.ParseToDataRow(row, columnName, dtParsed, rowFromXml[schemaKey].ToString());
<span style="color: #0000ff">break</span>;
}
}
}
}
}</pre></div><br />
Note the comments at the beginning of each of those methods. I used Typed DataSets extensively, so I don't need to be adding any columns to a "generic" DataTable. But, you don't have to have a Typed DataSet to have a DataTable with pre-defined columns and datatypes.<br />
<br />
And lastly, the common method that they both call:<br />
<br />
<div id="codeSnippetWrapper"><pre id="codeSnippet" style="border-top-style: none; overflow: visible; font-size: 10pt; font-family: 'Courier New', courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #e8d8b7"><span style="color: #0000ff">private</span> <span style="color: #0000ff">void</span> ParseToDataRow(DataRow row, <span style="color: #0000ff">string</span> columnName, DataTable dt, <span style="color: #0000ff">string</span> data)
{
<span style="color: #0000ff">foreach</span> (DataColumn dc <span style="color: #0000ff">in</span> dt.Columns)
{
<span style="color: #0000ff">if</span> (dc.ColumnName.ToUpper() == columnName.ToUpper())
{
<span style="color: #0000ff">if</span> (dc.DataType == Type.GetType(<span style="color: #006080">"System.Double"</span>))
{
<span style="color: #0000ff">double</span> lat;
<span style="color: #0000ff">if</span> (<span style="color: #0000ff">double</span>.TryParse(data, <span style="color: #0000ff">out</span> lat))
{
<span style="color: #0000ff">if</span> (data.Contains(<span style="color: #006080">'.'</span>))
row[dc] = lat;
<span style="color: #0000ff">else</span>
row[dc] = lat / 1000000;
}
}
<span style="color: #0000ff">else</span> <span style="color: #0000ff">if</span> (dc.DataType == Type.GetType(<span style="color: #006080">"System.Int32"</span>))
{
<span style="color: #0000ff">int</span> val;
<span style="color: #0000ff">if</span> (<span style="color: #0000ff">int</span>.TryParse(data, <span style="color: #0000ff">out</span> val))
{
row[dc] = val;
}
}
<span style="color: #0000ff">else</span> <span style="color: #0000ff">if</span> (dc.DataType == Type.GetType(<span style="color: #006080">"System.DateTime"</span>))
{
DateTime date;
<span style="color: #0000ff">if</span> (DateTime.TryParse(data.Replace(<span style="color: #006080">'/'</span>, <span style="color: #006080">' '</span>), <span style="color: #0000ff">out</span> date))
{
row[dc] = date;
}
}
<span style="color: #0000ff">else</span>
{
<span style="color: #0000ff">if</span> (<span style="color: #0000ff">string</span>.IsNullOrWhiteSpace(data) == <span style="color: #0000ff">false</span>)
row[dc] = data;
}
<span style="color: #0000ff">break</span>;
}
}
}
</pre></div><br />
So, now you've seen how the same metadata and (at least part of) the same code can be used to parse data out of two very different types of data. I hope that you, dear Reader, can find some use for this.<br />
<br />
Happy Coding! =0)Bonniehttp://www.blogger.com/profile/11241425687786973525noreply@blogger.com0tag:blogger.com,1999:blog-33753991.post-4669934682086491312019-07-26T22:03:00.000-07:002019-07-26T22:03:04.152-07:00When New Outlook 365 Updates Drive You NutsSorry to depart from my usual .NET posts, but I'm hoping I can save other people from a lot of Googling.<br />
<br />
I have Office 365, but I don't always receive the latest updates right away (I don't know why, and that's not really the subject of this post anyway ... although it *is* somewhat related ... more on that later). My Outlook finally updated to the latest version a week or two ago. The update was to <b>Version 1906, Build 11727.20244. And, it is *AWFUL* !!!</b><br />
<h3><b><br />
First, a description of why it's so awful:<br />
</b></h3><b>Short and sweet: too much extra white space!!</b> I don't have that newest version anymore, I reverted to an earlier version (which is what this blog post is about), so I can't show you screenshots of mine before I fixed it, but I found some online that I can show you (sorry for the poor quality). This is in case you haven't had this Update applied yet and so you may not have seen this:<br />
<br />
Latest, Version 1906:<br />
<br />
<a href="https://2.bp.blogspot.com/-a-KDR9_3koI/XTqHcKM2phI/AAAAAAAAAP8/JlYZ6eplupQFLa3wUOeqfrhd4HzuTRUMACPcBGAYYCw/s1600/Version1906_EmailList.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="453" data-original-width="532" src="https://2.bp.blogspot.com/-a-KDR9_3koI/XTqHcKM2phI/AAAAAAAAAP8/JlYZ6eplupQFLa3wUOeqfrhd4HzuTRUMACPcBGAYYCw/s1600/Version1906_EmailList.png" /></a><br />
<br />
Whereas, here's what mine looks like now that I've reverted back to an older Version (I've changed my theme color to match the above screenshot ... I don't usually use this one, it's too much white).<br />
<br />
My Reverted Version:<br />
<br />
<a href="https://1.bp.blogspot.com/-WEjbPO4zS_g/XTqHp8iqbVI/AAAAAAAAAP4/dy5HYwd9080ohAVXYgJxzqR0T547V4sIACPcBGAYYCw/s1600/MyRevertedVersion_EmailList.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="164" data-original-width="1006" src="https://1.bp.blogspot.com/-WEjbPO4zS_g/XTqHp8iqbVI/AAAAAAAAAP4/dy5HYwd9080ohAVXYgJxzqR0T547V4sIACPcBGAYYCw/s1600/MyRevertedVersion_EmailList.png" /></a><br />
<br />
Wow! Big difference!!! No ridiculous extra white space!<br />
<br />
Another example: composing an email …<br />
<br />
Latest, Version 1906:<br />
<br />
<a href="https://4.bp.blogspot.com/-bqZLOiRAAb4/XTqHreUGOII/AAAAAAAAAQE/G45_yAp3Ddgv1yr97I4EjomJrkO1PwuIQCPcBGAYYCw/s1600/Version1906_ComposingEmail.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="315" data-original-width="750" src="https://4.bp.blogspot.com/-bqZLOiRAAb4/XTqHreUGOII/AAAAAAAAAQE/G45_yAp3Ddgv1yr97I4EjomJrkO1PwuIQCPcBGAYYCw/s1600/Version1906_ComposingEmail.png" /></a><br />
<br />
With this newest Version, there's an option on the ribbon to tighten up the spacing a little, which makes it look, like this:<br />
<br />
<a href="https://1.bp.blogspot.com/-ZufGGplcjbk/XTqHro3nzPI/AAAAAAAAAQI/e4tu4sJ0y-g9RdnQgg50U2vVnmtFcW07ACPcBGAYYCw/s1600/Version1906_TighterSpacing.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="277" data-original-width="743" src="https://1.bp.blogspot.com/-ZufGGplcjbk/XTqHro3nzPI/AAAAAAAAAQI/e4tu4sJ0y-g9RdnQgg50U2vVnmtFcW07ACPcBGAYYCw/s1600/Version1906_TighterSpacing.png" /></a><br />
<br />
Well, OK, it's not *as* bad ... but it's still way too much wasted space! If they hadn't added all that extra white space, they wouldn't have to tighten the spacing to begin with! Give me back my old version!<br />
<br />
My Reverted Version:<br />
<br />
<a href="https://3.bp.blogspot.com/-vsaV1FqF3HE/XTqHp18pcII/AAAAAAAAAP8/MCyHzrwmLRw1sCpRMrOE-YUhQmYOKxfTQCPcBGAYYCw/s1600/MyRevertedVersion_ComposingEmail.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="251" data-original-width="932" src="https://3.bp.blogspot.com/-vsaV1FqF3HE/XTqHp18pcII/AAAAAAAAAP8/MCyHzrwmLRw1sCpRMrOE-YUhQmYOKxfTQCPcBGAYYCw/s1600/MyRevertedVersion_ComposingEmail.png" /></a><br />
<br />
I don't usually keep the Ribbon pinned, I just drop it down when I need it. You all know what ribbon bars look like, so I won't bother with another screenshot. I like my old version much better. A lot more compact and no wasted vertical space.<br />
<br />
I never even looked at the Calendar with the latest Version 1906, but I hear that there were similar issues there. One complaint in particular was about moving the location of various options to a different spot when setting up an appointment ... and there goes your muscle memory, all shot to hell.<br />
<h3><b><br />
Now, let's fix this puppy!</b><br />
</h3>First, here's a link a Microsoft article about "How to revert to an earlier version". It's pretty straightforward and the instructions are easy to follow:<br />
<br />
<a href="https://support.microsoft.com/en-us/help/2770432/how-to-revert-to-an-earlier-version-of-office-2013-or-office-2016-clic">https://support.microsoft.com/en-us/help/2770432/how-to-revert-to-an-earlier-version-of-office-2013-or-office-2016-clic</a><br />
<br />
Basically:<br />
<ul><li><div>Download and unzip the OfficeDeploymentTool exe (self-extracting).</div></li>
<li><div>Create a Config.xml file to put the version you want to update to (as shown in the above link).</div></li>
<li><div>Turn <span style="font-weight: bold;">off</span> Office auto-updates (see screenshots below)</div></li>
<li><div>Run Setup.exe.</div></li>
<li><div>Turn <span style="font-weight: bold;">off</span> Office auto-updates again (running Setup turns them back on). <span style="font-weight: bold;">This part is important!!</span></div></li>
</ul><div><br />
</div><div>To turn off Office auto-updates, open any Office application (Excel, Outlook, etc.), go to File | Account (or Office Account). On the right side of the screen you will see Product Information Office. Click on the Update Options button to disable auto-updating:</div><br />
<a href="https://1.bp.blogspot.com/-yf5a2hEdCD0/XTqHrd4lb_I/AAAAAAAAAQA/oi0rOLHEQPopkY0e0Rx_m9DiSvQcswGDQCPcBGAYYCw/s1600/ProductInformation.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="722" data-original-width="804" src="https://1.bp.blogspot.com/-yf5a2hEdCD0/XTqHrd4lb_I/AAAAAAAAAQA/oi0rOLHEQPopkY0e0Rx_m9DiSvQcswGDQCPcBGAYYCw/s1600/ProductInformation.png" /></a><br />
<br />
As previously mentioned, the Version that is awful is 1906, Build 11727.20244 (maybe it will be changed/fixed in subsequent Versions/Builds, but not yet). How do you find your current Version/Build? It's on the same page as the screenshot above (Product Information), a couple of buttons down from there (About Outlook, or About Excel, etc.)<br />
<br />
Now, I need to find the previous Office version. In a comment I found in a different post/conversation that I was reading about this problem, there was a link to a list of previous versions. Silly me, I should have stuck with the official suggestion in the "How to revert to an earlier version" article. I won't even bother posting this one, because it basically led me down the wrong path, as it only showed one update per month, when in fact there can be multiple Build updates per month.<br />
<br />
I decided that I should go back at least until May, since the 1906 Version went back to mid-June and I remember seeing an early June post about the latest Version.<br />
<br />
So I chose what I thought was the only update in May, Version 1905, Build 11629.20196. I followed the steps above and it updated perfectly to that Version/Build.<br />
<h3><b><br />
What happened? It didn't work!!</b><br />
</h3>But, it didn't fix it. When I opened Outlook, it *still* had all that extra white space!!!! I double-checked that it had actually reverted to Version 1905 (described above), and it had. Darn, I needed to go back even further. Luckily that was easy enough. <br />
<br />
This time, I went to the official "Update history for Office 365" (in the "How to revert to an earlier version" article under Step 2, Item 1) to see the previous versions:<br />
<a href="https://docs.microsoft.com/en-us/officeupdates/update-history-office365-proplus-by-date?redirectSourcePath=%2fen-us%2farticle%2fae942449-1fca-4484-898b-a933ea23def7"></a><a href="https://docs.microsoft.com/en-us/officeupdates/update-history-office365-proplus-by-date?redirectSourcePath=%2fen-us%2farticle%2fae942449-1fca-4484-898b-a933ea23def7" target="_blank">https://docs.microsoft.com/en-us/officeupdates/update-history-office365-proplus-by-date?redirectSourcePath=%2fen-us%2farticle%2fae942449-1fca-4484-898b-a933ea23def7</a><br />
I now saw that another May Version looked more promising: the final Build of Version 1904, Build 11601.20230, which was on May 22. <br />
<br />
Since the Office Deployment Tool had already been downloaded, you don't have to download it again. Just change the config to a different version/build and run it all again (don't forget about turning off the auto-updates). That solved the issue ... Outlook is much nicer now!<br />
<br />
Periodically check the "Update history for Office 365" link to see if a newer Version/Build has been released ... then you can turn the auto-update back on to see if they've done anything to fix that extra white-space debacle!! =0) And, of course, revert back if they haven't. =0(Bonniehttp://www.blogger.com/profile/11241425687786973525noreply@blogger.com0tag:blogger.com,1999:blog-33753991.post-84765941046434670702019-06-29T16:17:00.000-07:002019-06-29T16:17:25.153-07:00Long-Running Process On A Timer<p>I wrote a blog post a few years ago called Fire and Forget (<a href="https://geek-goddess-bonnie.blogspot.com/2017/03/fire-and-forget.html" target="_blank">https://geek-goddess-bonnie.blogspot.com/2017/03/fire-and-forget.html</a>). It was about using Task.Run() to initiate a long-running process that doesn't need to be monitored by the user (like maybe running SQL scripts or Stored Procedures). The gist of that post was that using a Task.Run() runs the process in a separate thread (so it won't block the UI, if you're running from a UI) and it just does its thing without interrupting the rest of your program.</p><p>The post I'm writing now is slightly different, in that we want to run long-running processes, but we want to run them at short intervals. For example, to run a SQL Stored Procedure every second that will clean up old data in your database. Say that the Stored Proc *sometimes* finishes in that one second interval, but sometimes it takes more than a second. If this is the case, you don't want it to start the next iteration every second ... you'd want it to start the when the previous one finishes ... even if that previous one is taking 10 seconds.</p><p>An easy way to accomplish this is to use the System.Threading.Timer. Everything that runs in the Timer's Callback is run in a separate thread:</p><div id="codeSnippetWrapper"> <pre id="codeSnippet" style="border-top-style: none; overflow: visible; font-size: 10pt; font-family: 'Courier New', courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #e8d8b7"><span style="color: #0000ff">private</span> <span style="color: #0000ff">long</span> TIME_INTERVAL_IN_MILLISECONDS = 1000; <span style="color: #008000">// 1 second</span><br /><span style="color: #0000ff">private</span> System.Threading.Timer timerRunLongProcess;<br /><span style="color: #0000ff">private</span> <span style="color: #0000ff">void</span> BtnStart_Click(<span style="color: #0000ff">object</span> sender, EventArgs e)<br />{<br /> <span style="color: #0000ff">this</span>.timerRunLongProcess = <span style="color: #0000ff">new</span> System.Threading.Timer(RunLongProcess, <span style="color: #0000ff">null</span>, TIME_INTERVAL_IN_MILLISECONDS, Timeout.Infinite);<br />}<br /><span style="color: #0000ff">private</span> <span style="color: #0000ff">void</span> RunLongProcess(<span style="color: #0000ff">object</span> state)<br />{<br /> <span style="color: #008000">// Here you would put the code that runs a long process, maybe a call to a SQL Stored Proc or whatever it may be</span><br /> <span style="color: #008000">// This will actually run on a separate thread and won't interfere with the UI thread or the rest of your application</span><br /> <span style="color: #008000">// ...</span><br /> <span style="color: #008000">// You can simulate a long-running process like this:</span><br /> Console.WriteLine(<span style="color: #006080">"It's time! Time is "</span> + DateTime.Now.ToLongTimeString());<br /> Thread.Sleep(5000); <span style="color: #008000">// 5 seconds</span><br /> Console.WriteLine(<span style="color: #006080">"Done! Time is "</span> + DateTime.Now.ToLongTimeString());<br /><br /> <span style="color: #008000">// This will get the timer going again for the next 1 second</span><br /> <span style="color: #0000ff">this</span>.timerRunLongProcess.Change(TIME_INTERVAL_IN_MILLISECONDS, Timeout.Infinite);<br />}</pre><br />
<br /></div>Happy coding!  =0)<br />
<br />
<br />
<br />
<br />
Bonniehttp://www.blogger.com/profile/11241425687786973525noreply@blogger.com2tag:blogger.com,1999:blog-33753991.post-56331578847745415212019-04-28T16:41:00.000-07:002019-04-28T16:41:14.860-07:00Passing Data Using Static Classes<p>Typically, when I see questions on the Forums about passing data between Forms, the questions are usually about passing data in, what I will call, the "classic" sense: two Forms are open, one is used for gathering data and the other is used for manipulating and/or displaying data. For those types of questions, I refer the person to my blog posts from many years ago:</p><a href="http://geek-goddess-bonnie.blogspot.com/2011/01/passing-data-between-forms.html" target="_blank">http://geek-goddess-bonnie.blogspot.com/2011/01/passing-data-between-forms.html</a> <br />
<a href="http://geek-goddess-bonnie.blogspot.com/2012/12/passing-data-between-forms-redux_31.html" target="_blank">http://geek-goddess-bonnie.blogspot.com/2012/12/passing-data-between-forms-redux_31.html</a><br />
<br />
And this one is often relevant too:<br />
<br />
<a href="https://geek-goddess-bonnie.blogspot.com/2010/06/program-to-interface.html" target="_blank">https://geek-goddess-bonnie.blogspot.com/2010/06/program-to-interface.html</a><br />
<br />
I came across a question yesterday that at first seemed like it was going to be about passing data in the "classic" sense. Until I thought some more about what the person was actually asking about:  the "data-gathering" Form was a Login Form and it would collect information from the user, an Account Number for example. They then wanted to display that information on all other Forms in the application.  Since Login Forms are displayed at application start-up and then they "go away", we no longer have the ability to pass the data in the "classic" sense (two Forms are not going to both be open). Some other mechanism is needed.<br />
<br />
This particular scenario with a Login Form, in my opinion, only requires a static class with static properties. For this application, I think that a singleton class would be overkill (because the class is only ever going to be populated at application startup and nowhere else or at any other time). <br />
<br />
So, let's start with a static Account class:<br />
<br />
<div id="codeSnippetWrapper"> <pre id="codeSnippet" style="border-top-style: none; overflow: visible; font-size: 10pt; font-family: 'Courier New', courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #e8d8b7"><span style="color: #0000ff">public</span> <span style="color: #0000ff">static</span> <span style="color: #0000ff">class</span> AccountClass<br />{<br /> <span style="color: #0000ff">public</span> <span style="color: #0000ff">static</span> <span style="color: #0000ff">string</span> AccountNumber { get; set; }<br /> <span style="color: #008000">// plus, any other static info you'd like to share with your other Forms</span><br />}</pre></div><br />
In your LoginForm, perhaps after the user had clicked OK to login, you'd want to set the static members of the AccountClass:</p><br />
<div id="codeSnippetWrapper"> <pre id="codeSnippet" style="border-top-style: none; overflow: visible; font-size: 10pt; font-family: 'Courier New', courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #e8d8b7"><span style="color: #0000ff">private</span> <span style="color: #0000ff">void</span> OKButton_Click(<span style="color: #0000ff">object</span> sender, EventArgs e)<br />{<br /> AccountClass.AccountNumber = <span style="color: #0000ff">this</span>.txtAccountNumber.Text;<br /> <span style="color: #008000">// plus, whatever else you need to do in this button click</span><br />}</pre></div><br />
Then, in any other Forms where you need this information, get it from the static class. For example, to display the AccountNumber in a label on your Form, take care of that in the Form's constructor:<br />
<br />
<div id="codeSnippetWrapper"> <pre id="codeSnippet" style="border-top-style: none; overflow: visible; font-size: 10pt; font-family: 'Courier New', courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #e8d8b7"><span style="color: #0000ff">public</span> CustomerForm()<br />{<br /> InitializeComponent();<br /> <span style="color: #0000ff">this</span>.lblAccountNumber.Text = AccountClass.AccountNumber;<br />}</pre></div><br />
Happy Coding! =0)<br />
Bonniehttp://www.blogger.com/profile/11241425687786973525noreply@blogger.com11tag:blogger.com,1999:blog-33753991.post-79244107065543450632019-02-27T08:47:00.000-08:002019-02-27T08:47:59.470-08:00Debugging Lambda / LINQHave you ever had a LINQ query or lambda expression and you couldn't for the life of you figure out why it wasn't working? To make debugging easier, you can actually set breakpoints on individual parts of the lambda expression. The query below is an example. Say that you're getting the error: <em>System.FormatException: "Input string was not in a correct format."</em>  Judging from that, you think it is probably the int.Parse that is causing the problem, but what is the value of the row that's having an issue? So, set a breakpoint on the .Parse (just select Parse and hit F9), and if you don't have a lot of rows you could easily find the row where the "amount" column contains a non-numeric value.<br />
<br />
<div id="codeSnippetWrapper"> <pre id="codeSnippet" style="border-top-style: none; overflow: visible; font-size: 10pt; font-family: 'Courier New', courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #e8d8b7"><span style="color: #0000ff">private</span> <span style="color: #0000ff">void</span> TestLambdaHowtoSetBreakpoint()<br />{<br /> <span style="color: #008000">// Highlight one (or several) of the lambda parts of this LINQ query (such as the .Sum or the .Parse) </span><br /> <span style="color: #008000">// and hit F9 to set breakpoints only on that part of the query! Awesome!</span><br /> var sum = <span style="color: #0000ff">this</span>.dtGlobal.AsEnumerable().Select(row => row)<br /> .GroupBy(row => row.Field<<span style="color: #0000ff">string</span>>(<span style="color: #006080">"label"</span>))<br /> .ToDictionary(grp => grp.Key, intField => intField.Sum(row => <span style="color: #0000ff">int</span>.Parse(row[<span style="color: #006080">"amount"</span>].ToString())));<br />}<br /></pre></div> <br />
Some people may be confused about the difference between lambda and LINQ. There is a good explanation in this StackOverflow thread (the second reply): <a href="https://stackoverflow.com/questions/34980144/difference-between-lambda-and-linq" target="_blank">https://stackoverflow.com/questions/34980144/difference-between-lambda-and-linq</a><br />
<br />
I'll include some of that StackOveflow reply here:<br />
----------------------------------------------------------------<br />
This is LINQ:<br />
<div id="codeSnippetWrapper"> <pre id="codeSnippet" style="border-top-style: none; overflow: visible; font-size: 10pt; font-family: 'Courier New', courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #e8d8b7">var a = from b <span style="color: #0000ff">in</span> someList<br /> <span style="color: #0000ff">where</span> b.Value == something<br /> select b;<br /></pre></div><br />
But it can be written with a lambda expression:<br />
<div id="codeSnippetWrapper"> <pre id="codeSnippet" style="border-top-style: none; overflow: visible; font-size: 10pt; font-family: 'Courier New', courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #e8d8b7">var a = someList.Where(b => b.Value == something);</pre><br />
The lambda part is <strong>b => b.Value == something</strong>.</div><br />
Whereas: <br />
<div id="codeSnippetWrapper"> <pre id="codeSnippet" style="border-top-style: none; overflow: visible; font-size: 10pt; font-family: 'Courier New', courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #e8d8b7">mock.Setup(m => m.SomeOp()).Returns(<span style="color: #0000ff">new</span> Thing()); </pre></div><br />
uses a lambda expression (<strong>the m => m.SomeOp()</strong>), but has nothing to do with LINQ.<br />
<br />
To make it easy, just remember that  <strong>=></strong> is the lambda operator.<br />
----------------------------------------------------------------<br />
<br />
That’s it! I hope you’ve learned something about debugging lambda expressions! Happy coding!  =0)Bonniehttp://www.blogger.com/profile/11241425687786973525noreply@blogger.com0tag:blogger.com,1999:blog-33753991.post-63952141138000716262019-01-25T17:30:00.001-08:002019-01-25T17:30:35.174-08:00Encryption for Messaging Exchange<p>Perhaps you're a regular reader here on my blog, but perhaps not. Those of you who have read some of my posts might remember that our application is a home-grown message bus system that is multi-threaded and runs as a Windows Service. It basically receives, processes and sends messages between instances of the application running on other servers. All this is usually done on a local network or domain, but the messages could also, in theory, be sent out over the Internet. In any case, Encryption is obviously a necessity.</p><p>I have already written two blogs that are not about encryption, per se, but *do* have to do with the encryption process we use in our application. </p><p><a href="http://geek-goddess-bonnie.blogspot.com/2016/04/transport-rsa-key-containers.html" target="_blank">http://geek-goddess-bonnie.blogspot.com/2016/04/transport-rsa-key-containers.html</a><br />
<a href="http://geek-goddess-bonnie.blogspot.com/2015/01/compress-decompress.html" target="_blank">http://geek-goddess-bonnie.blogspot.com/2015/01/compress-decompress.html</a></p><p>For encryption, we use AES Encryption and utilize an RSA KeyContainer (stored at the machine-level rather than the user-level) for encrypting the AES symmetric keys (which we store, encrypted, in a database table).</p><p>Here are some links explaining the two types of encryption that are involved in my solution:</p><p><a href="http://thebestvpn.com/advanced-encryption-standard-aes/#cipher" target="_blank">http://thebestvpn.com/advanced-encryption-standard-aes/#cipher</a><br />
<a href="http://www.boxcryptor.com/en/encryption/" target="_blank">http://www.boxcryptor.com/en/encryption/</a></p><p>This is quoted from the first article:</p><p><em><u>Like nearly all encryption algorithms, AES relies on the use of keys during the encryption and decryption process. Since the AES algorithm is symmetric, the same key is used for both encryption and decryption.</u></em></p><p><u><em>... symmetric algorithms require you to find a secure method of transferring the key to the desired recipient</em>.</u></p><p>This is quoted from the second article:</p><p><em><u>RSA works with two different keys: A public and a private one. Both work complementary to each other, which means that a message encrypted with one of them can only be decrypted by its counterpart. Since the private key cannot be calculated from the public key, the latter is generally available to the public.</u></em></p><p>AES is an excellent encryption algorithm, and is theoretically "un-crackable". With the only "drawback" being that it uses symmetric keys (as the first article above explains). But, symmetric key algorithms are significantly faster than asymmetric algorithms and can easily encrypt/decrypt large messages.  RSA encryption is best for encrypting smaller messages, because it is slower. So a combination of the two is the best of both worlds: Generate your AES symmetric keys, Encrypt them with RSA and then you're able to send the RSA public keys anywhere. </p><p>This is the concept I will attempt to explain in this blog post. I have a downloadable solution for showing how this works. It uses two Windows Forms (AgencyOneMessageForm and AgencyTwoMessageForm) that "talk to" each other (by reading/writing files). This is only for ease of demonstrating the encrypt/decrypt process. Normally, the keys are stored in databases and the messaging between the multiple systems utilizes web service calls to send the messages (which are also stored in databases).</p><p>Download the demo code from here (<a href="http://drive.google.com/file/d/1YnLSJ9yd2V4--o5d5lg0Qeai1AdRhuZo/view" target="_blank">GeekGoddessEncryptionDemo.zip</a>)</p><p>The very first thing these demo Forms do is set up the RSA encryption. Note that if the KeyContainer doesn't already exist in the machine store (which, in case you're interested, is stored here: C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys), it is created, then retrieved again every time the following code is run. In this demo, the two Forms use a different KeyContainerName, thus generating different RSA keys. In real-life these application would be on different physical machines and so would have different RSA keys even when they use the same KeyContainerName.</p><div id="codeSnippetWrapper"><pre id="codeSnippet" style="border-top-style: none; overflow: visible; font-size: 10pt; font-family: 'Courier New', courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #e8d8b7"><span style="color: #008000">// Make sure you have this using</span>
<span style="color: #008000">// using System.Security.Cryptography;</span>
<span style="color: #008000">// Crypto methods</span>
<span style="color: #0000ff">protected</span> <span style="color: #0000ff">void</span> SetupCrypto()
{
CspParameters cp = <span style="color: #0000ff">new</span> CspParameters();
cp.KeyContainerName = <span style="color: #0000ff">this</span>.KeyContainerName;
cp.Flags |= CspProviderFlags.UseMachineKeyStore;
<span style="color: #0000ff"> this</span>.KeyContainer = <span style="color: #0000ff">new</span> RSACryptoServiceProvider(cp);
<span style="color: #0000ff"> this</span>.PublicEncryptionKey = <span style="color: #0000ff">this</span>.KeyContainer.ToXmlString(<span style="color: #0000ff">false</span>);
}
</pre></div><p>Next, we set up the AES encryption. For this demo, we'll designate AgencyOne as the "Central Scrutinizer" (for those who don't "get" that, it's a reference to a Frank Zappa album called Joe's Garage). Anyway, what this means is that AgencyOne is the Controller, it controls the creation of the AES keys. Once it creates (and stores) the AES keys, the other Agencies in the system can join the group by sending their own Public RSA key to the Central Scrutinizer, which uses their Public key to encrypt the AES keys and send them back. The receiving Agency will save the encrypted keys, as is, in a file (in real life, in a database).  That way, the same AES keys are used between all the Agencies in the group. Each Agency uses it's own RSA Private key to decrypt the encrypted keys that were just sent to it.</p><p>Here is what AgencyOne uses to create the AES encryption keys and store/retrieve from the AgencyOneKeys.xml file:</p><div id="codeSnippetWrapper"><pre id="codeSnippet" style="border-top-style: none; overflow: visible; font-size: 10pt; font-family: 'Courier New', courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #e8d8b7"><span style="color: #0000ff">private</span> <span style="color: #0000ff">void</span> SetEncryptionKeys()
{
<span style="color: #008000"> // Normally, I retrieve (and save) the encrypted asymmetric AES keys from a database table.</span>
<span style="color: #008000"> // But, for the purpose of this example (to make it easier to demonstrate), they are just being stored in an XML file.</span>
<span style="color: #0000ff"> this</span>.dsKeys = <span style="color: #0000ff">new</span> DataSet();
<span style="color: #0000ff"> string</span> fileName = <span style="color: #0000ff">this</span>.AgencyName + <span style="color: #006080">"Keys.xml"</span>;
<span style="color: #0000ff"> if</span> (File.Exists(fileName))
<span style="color: #0000ff"> this</span>.dsKeys.ReadXml(fileName);
<span style="color: #0000ff"> else</span>
{
<span style="color: #0000ff"> this</span>.dsKeys.DataSetName = <span style="color: #006080">"EncryptionDataSet"</span>;
DataTable dtKeys = <span style="color: #0000ff">new</span> DataTable();
<span style="color: #0000ff"> this</span>.dsKeys.Tables.Add(dtKeys);
dtKeys.TableName = <span style="color: #006080">"Encryption"</span>;
dtKeys.Columns.Add(<span style="color: #006080">"Agency"</span>);
dtKeys.Columns.Add(<span style="color: #006080">"EncryptionKey"</span>);
dtKeys.Columns.Add(<span style="color: #006080">"EncryptionIV"</span>);
dtKeys.Rows.Add(dtKeys.NewRow());
}
DataRow row = <span style="color: #0000ff">this</span>.dsKeys.Tables[0].Rows[0];
<span style="color: #0000ff"> string</span> Key = row[<span style="color: #006080">"EncryptionKey"</span>].ToString();
<span style="color: #0000ff"> string</span> IV = row[<span style="color: #006080">"EncryptionIV"</span>].ToString();
<span style="color: #0000ff"> if</span> (Key != <span style="color: #006080">""</span> && IV != <span style="color: #006080">""</span>)
{
<span style="color: #008000"> // Remember, the Key/IV are stored RSA encrypted ... we have to decrypt them in order to use them</span>
EncryptionKey = <span style="color: #0000ff">this</span>.KeyContainer.Decrypt(Convert.FromBase64String(Key), <span style="color: #0000ff">false</span>);
EncryptionIV = <span style="color: #0000ff">this</span>.KeyContainer.Decrypt(Convert.FromBase64String(IV), <span style="color: #0000ff">false</span>);
}
<span style="color: #0000ff"> if</span> (EncryptionKey == <span style="color: #0000ff">null</span> || EncryptionIV == <span style="color: #0000ff">null</span>)
{
<span style="color: #008000"> // First time this is run, there won't be any keys set up. Create and save them now.</span>
<span style="color: #0000ff"> this</span>.Encrypter = <span style="color: #0000ff">new</span> EncryptionClass();
<span style="color: #0000ff"> this</span>.Encrypter.HashGuidsIntoEncryptionKeys(<span style="color: #0000ff">ref</span> EncryptionKey, <span style="color: #0000ff">ref</span> EncryptionIV);
<span style="color: #008000"> // encrypt with RSA public key, save to the file</span>
RSACryptoServiceProvider PublicRSA = <span style="color: #0000ff">new</span> RSACryptoServiceProvider();
PublicRSA.FromXmlString(PublicEncryptionKey);
Key = Convert.ToBase64String(PublicRSA.Encrypt(EncryptionKey, <span style="color: #0000ff">false</span>));
IV = Convert.ToBase64String(PublicRSA.Encrypt(EncryptionIV, <span style="color: #0000ff">false</span>));
row[<span style="color: #006080">"Agency"</span>] = <span style="color: #0000ff">this</span>.AgencyName;
row[<span style="color: #006080">"EncryptionKey"</span>] = Key;
row[<span style="color: #006080">"EncryptionIV"</span>] = IV;
<span style="color: #0000ff"> this</span>.dsKeys.WriteXml(fileName);
}
}
<span style="color: #0000ff">public</span> <span style="color: #0000ff">void</span> HashGuidsIntoEncryptionKeys(<span style="color: #0000ff">ref</span> <span style="color: #0000ff">byte</span>[] key, <span style="color: #0000ff">ref</span> <span style="color: #0000ff">byte</span>[] iv)
{
<span style="color: #0000ff"> string</span> KeyGuid = Guid.NewGuid().ToString();
<span style="color: #0000ff"> string</span> IVGuid = Guid.NewGuid().ToString();
KeyGuid = KeyGuid.Replace(<span style="color: #006080">"-"</span>, <span style="color: #006080">""</span>);
IVGuid = IVGuid.Replace(<span style="color: #006080">"-"</span>, <span style="color: #006080">""</span>);
<span style="color: #008000"> // Hash the GUID into byte arrays - Key is 32 bytes and IV is 16</span>
SHA256Managed Hasher = <span style="color: #0000ff">new</span> SHA256Managed();
Hasher.ComputeHash(Encoding.ASCII.GetBytes(KeyGuid));
key = Hasher.Hash;
Hasher.ComputeHash(Encoding.ASCII.GetBytes(IVGuid));
<span style="color: #0000ff"> byte</span>[] result = Hasher.Hash;
iv = <span style="color: #0000ff">new</span> <span style="color: #0000ff">byte</span>[16];
<span style="color: #0000ff"> for</span> (<span style="color: #0000ff">int</span> i = 0; i < 16; i++) iv[i] = result[i];
}</pre></div><p>AgencyTwo also calls its own SetEncryptionKeys() method, which is slightly different than AgencyOne's because it doesn't have to create any AES keys, just decrypt the keys it has saved when it received them from the Central Scrutinizer:</p><div id="codeSnippetWrapper"><pre id="codeSnippet" style="border-top-style: none; overflow: visible; font-size: 10pt; font-family: 'Courier New', courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #e8d8b7"><span style="color: #0000ff">private</span> <span style="color: #0000ff">void</span> SetEncryptionKeys()
{
<span style="color: #008000"> // Normally, I retrieve (and save) the encrypted asymmetric AES keys from a database table.</span>
<span style="color: #008000"> // But, for the purpose of this example (to make it easier to demonstrate), they are just being stored in an XML file.</span>
<span style="color: #0000ff"> this</span>.dsKeys = <span style="color: #0000ff">new</span> DataSet();
<span style="color: #0000ff"> string</span> fileName = <span style="color: #0000ff">this</span>.AgencyName + <span style="color: #006080">"Keys.xml"</span>;
<span style="color: #0000ff"> if</span> (File.Exists(fileName))
<span style="color: #0000ff"> this</span>.dsKeys.ReadXml(fileName);
<span style="color: #0000ff"> else</span>
<span style="color: #0000ff"> return</span>; <span style="color: #008000">// wait to join the Group</span>
DataRow row = <span style="color: #0000ff">this</span>.dsKeys.Tables[0].Rows[0];
<span style="color: #0000ff"> string</span> Key = row[<span style="color: #006080">"EncryptionKey"</span>].ToString();
<span style="color: #0000ff"> string</span> IV = row[<span style="color: #006080">"EncryptionIV"</span>].ToString();
<span style="color: #0000ff"> if</span> (Key != <span style="color: #006080">""</span> && IV != <span style="color: #006080">""</span>)
{
<span style="color: #008000"> // Remember, the Key/IV are stored RSA encrypted ... we have to decrypt them in order to use them</span>
EncryptionKey = <span style="color: #0000ff">this</span>.KeyContainer.Decrypt(Convert.FromBase64String(Key), <span style="color: #0000ff">false</span>);
EncryptionIV = <span style="color: #0000ff">this</span>.KeyContainer.Decrypt(Convert.FromBase64String(IV), <span style="color: #0000ff">false</span>);
}
<span style="color: #0000ff"> if</span> (EncryptionKey == <span style="color: #0000ff">null</span> || EncryptionIV == <span style="color: #0000ff">null</span>)
MessageBox.Show(<span style="color: #006080">"Problem with "</span> + fileName + <span style="color: #006080">". Contains empty Encryption keys"</span>);
}</pre></div><p>And, the last bit of code I will show here, the EncryptionClass:</p><div id="codeSnippetWrapper"><pre id="codeSnippet" style="border-top-style: none; overflow: visible; font-size: 10pt; font-family: 'Courier New', courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #e8d8b7"><span style="color: #0000ff">public</span> <span style="color: #0000ff">class</span> EncryptionClass
{
<span style="color: #cc6633"> #region</span> Declarations
<span style="color: #0000ff"> public</span> <span style="color: #0000ff">byte</span>[] EncryptionKey { get; set; }
<span style="color: #0000ff"> public</span> <span style="color: #0000ff">byte</span>[] EncryptionIV { get; set; }
<span style="color: #cc6633"> #endregion</span>
<span style="color: #cc6633"> #region</span> Constructors
<span style="color: #0000ff"> public</span> EncryptionClass()
{
}
<span style="color: #0000ff"> public</span> EncryptionClass(<span style="color: #0000ff">byte</span>[] encryptionKey, <span style="color: #0000ff">byte</span>[] encryptionIV)
{
<span style="color: #0000ff"> this</span>.EncryptionKey = encryptionKey;
<span style="color: #0000ff"> this</span>.EncryptionIV = encryptionIV;
}
<span style="color: #cc6633"> #endregion</span>
<span style="color: #cc6633"> #region</span> Public Methods
<span style="color: #0000ff"> public</span> <span style="color: #0000ff">string</span> Encrypt(<span style="color: #0000ff">string</span> data)
{
<span style="color: #0000ff"> return</span> <span style="color: #0000ff">this</span>.Encrypt(data, <span style="color: #0000ff">this</span>.EncryptionKey, <span style="color: #0000ff">this</span>.EncryptionIV);
}
<span style="color: #0000ff"> public</span> <span style="color: #0000ff">string</span> Decrypt(<span style="color: #0000ff">string</span> data)
{
<span style="color: #0000ff"> return</span> Encoding.UTF8.GetString(<span style="color: #0000ff">this</span>.Decrypt(data, <span style="color: #0000ff">this</span>.EncryptionKey, <span style="color: #0000ff">this</span>.EncryptionIV));
}
<span style="color: #0000ff"> public</span> <span style="color: #0000ff">void</span> HashGuidsIntoEncryptionKeys(<span style="color: #0000ff">ref</span> <span style="color: #0000ff">byte</span>[] key, <span style="color: #0000ff">ref</span> <span style="color: #0000ff">byte</span>[] iv)
{
<span style="color: #0000ff"> string</span> KeyGuid = Guid.NewGuid().ToString();
<span style="color: #0000ff"> string</span> IVGuid = Guid.NewGuid().ToString();
KeyGuid = KeyGuid.Replace(<span style="color: #006080">"-"</span>, <span style="color: #006080">""</span>);
IVGuid = IVGuid.Replace(<span style="color: #006080">"-"</span>, <span style="color: #006080">""</span>);
<span style="color: #008000"> // Hash the GUID into byte arrays - Key is 32 bytes and IV is 16</span>
SHA256Managed Hasher = <span style="color: #0000ff">new</span> SHA256Managed();
Hasher.ComputeHash(Encoding.ASCII.GetBytes(KeyGuid));
key = Hasher.Hash;
Hasher.ComputeHash(Encoding.ASCII.GetBytes(IVGuid));
<span style="color: #0000ff"> byte</span>[] result = Hasher.Hash;
iv = <span style="color: #0000ff">new</span> <span style="color: #0000ff">byte</span>[16];
<span style="color: #0000ff"> for</span> (<span style="color: #0000ff">int</span> i = 0; i < 16; i++) iv[i] = result[i];
}
<span style="color: #cc6633"> #endregion</span>
<span style="color: #cc6633"> #region</span> Private Methods
<span style="color: #0000ff"> private</span> <span style="color: #0000ff">string</span> Encrypt(<span style="color: #0000ff">string</span> Text, <span style="color: #0000ff">byte</span>[] key, <span style="color: #0000ff">byte</span>[] iv)
{
<span style="color: #0000ff"> byte</span>[] TextBytes = Encoding.UTF8.GetBytes(Text);
<span style="color: #0000ff"> return</span> <span style="color: #0000ff">this</span>.Encrypt(TextBytes, key, iv);
}
<span style="color: #0000ff"> private</span> <span style="color: #0000ff">string</span> Encrypt(<span style="color: #0000ff">byte</span>[] TextBytes, <span style="color: #0000ff">byte</span>[] key, <span style="color: #0000ff">byte</span>[] iv)
{
<span style="color: #0000ff"> try</span>
{
AesCryptoServiceProvider RM = <span style="color: #0000ff">new</span> AesCryptoServiceProvider();
RM.Mode = CipherMode.CBC;
ICryptoTransform encryptor = RM.CreateEncryptor(key, iv);
<span style="color: #008000"> // Create memory and crypto streams</span>
MemoryStream MStream = <span style="color: #0000ff">new</span> MemoryStream();
CryptoStream CStream = <span style="color: #0000ff">new</span> CryptoStream(MStream, encryptor, CryptoStreamMode.Write);
<span style="color: #008000"> // Encrypt and put in byte array</span>
CStream.Write(TextBytes, 0, TextBytes.Length);
CStream.FlushFinalBlock();
<span style="color: #0000ff"> byte</span>[] CipherTextBytes = MStream.ToArray();
<span style="color: #008000"> // Close streams</span>
MStream.Close();
CStream.Close();
<span style="color: #008000"> // Convert to Base64 string</span>
<span style="color: #0000ff"> string</span> CipherText = Convert.ToBase64String(CipherTextBytes);
<span style="color: #0000ff"> return</span> CipherText;
}
<span style="color: #0000ff"> catch</span> (Exception ex)
{
<span style="color: #0000ff"> throw</span> <span style="color: #0000ff">new</span> Exception(<span style="color: #006080">"Error in Encrypt"</span> + ex.Message);
}
}
<span style="color: #0000ff"> private</span> <span style="color: #0000ff">byte</span>[] Decrypt(<span style="color: #0000ff">string</span> Text, <span style="color: #0000ff">byte</span>[] key, <span style="color: #0000ff">byte</span>[] iv)
{
<span style="color: #0000ff"> try</span>
{
<span style="color: #0000ff"> if</span> (<span style="color: #0000ff">string</span>.IsNullOrEmpty(Text))
Text = <span style="color: #0000ff">this</span>.Encrypt(<span style="color: #006080">""</span>);
AesCryptoServiceProvider RM = <span style="color: #0000ff">new</span> AesCryptoServiceProvider();
RM.Mode = CipherMode.CBC;
ICryptoTransform decryptor = RM.CreateDecryptor(key, iv);
<span style="color: #008000"> // Convert string to byte array</span>
<span style="color: #0000ff"> byte</span>[] TextBytes = Convert.FromBase64String(Text);
<span style="color: #008000"> // Create memory and crypto streams</span>
MemoryStream MStream = <span style="color: #0000ff">new</span> MemoryStream(TextBytes);
CryptoStream CStream = <span style="color: #0000ff">new</span> CryptoStream(MStream, decryptor, CryptoStreamMode.Read);
<span style="color: #008000"> // Decrypt to a byte array and close the streams</span>
<span style="color: #0000ff"> byte</span>[] DecryptedBytes = <span style="color: #0000ff">new</span> <span style="color: #0000ff">byte</span>[TextBytes.Length];
<span style="color: #0000ff"> int</span> count = CStream.Read(DecryptedBytes, 0, DecryptedBytes.Length);
MStream.Close();
CStream.Close();
<span style="color: #008000"> // Create an array for return value and copy in the correct number of bytes</span>
<span style="color: #0000ff"> byte</span>[] returnval = <span style="color: #0000ff">new</span> <span style="color: #0000ff">byte</span>[count];
Array.Copy(DecryptedBytes, returnval, count);
<span style="color: #0000ff"> return</span> returnval;
}
<span style="color: #0000ff"> catch</span> (Exception ex)
{
<span style="color: #0000ff"> throw</span> <span style="color: #0000ff">new</span> Exception(<span style="color: #006080">"Error in Decrypt"</span> + ex.Message);
}
}
<span style="color: #cc6633"> #endregion</span>
}</pre></div><p>When the app first starts, AgencyOne will create all its keys and store them in the AgencyOneKeys.xml. It will instantiate and Show() the AgencyTwo form, which will create its RSA keys and send the Public key to AgencyOne (which simply consists of saving a file called PublicKey.txt). You'll have to click on AgencyOne's "Receive Public Key" button in order to for it to get the file and send encrypted keys back to AgencyTwo (which simply consists of saving a file called EncryptedKeys.txt). After that, you'll have to click on AgencyTwo's "Receive Encrypted Keys" button in order to finish setting up AgencyTwo's keys (at which time, it will save a file AgencyTwoKeys.xml).  Those two buttons will disappear from the Forms, as they are not needed once this initial "hand-shaking" has been done. You'll notice that if you run the application again.</p><p>Messaging is done much the same way. If you type into the top box and click "Send To" (One or Two), it will encrypt and send the encrypted message to the other Form (saving a file called MessageSent.txt). The other Form gets the message by clicking on "Receive From" (One or Two) reading the MessageSent.txt file, decrypting it and displaying it in the bottom box. There are default messages in both Forms in case you've not entered anything in the top box.</p><p>That's it, in a nutshell. Download the Demo to see it in action, plus any other little details I may not have included in this post. Again, the important part of this blog post is the encryption concepts and how (and why) to use them in a real world scenario, such as our messaging system. The Demo code is just to illustrate those concepts and to provide you with the encryption code necessary to implement your own encryption. But, you'll primarily use this messaging exchange kind of scenario in a back end server, you’d never use Windows Forms for communication in such a manner in a real world application. <br />
<br />
But, I'm sure you'll find other uses for the encryption methodology I've shared with you today!<br />
<br />
Happy coding! =0) </p>Bonniehttp://www.blogger.com/profile/11241425687786973525noreply@blogger.com0tag:blogger.com,1999:blog-33753991.post-46749088342220016862018-12-28T13:10:00.000-08:002018-12-28T13:10:33.032-08:00Event-Driven TCP<p>Merry Christmas and/or Happy Holidays! Happy New Year too! Here's a present for you ... the long-awaited, easy-to-use set of TCP Client classes that I use in my own applications (maybe abbreviated a bit, but not by much)!</p><p>First, let me start off mentioning the best site that I've found for an "almost perfect" class to use for easily writing event-driven TCP clients. The site is called DaniWeb: <a href="http://www.daniweb.com/software-development/csharp/code/422291/user-friendly-asynchronous-event-driven-tcp-client">http://www.daniweb.com/software-development/csharp/code/422291/user-friendly-asynchronous-event-driven-tcp-client</a> I say "almost perfect", because it needed some tweaking for my purposes. </p><p>I had initially made an addition of one Timer, and called it tmrTestConnection. It turns out that it was all that was ever needed, none of the other Timers in the original DaniWeb EventDrivenTCPClient class are necessary and can actually cause problems (or at least the way I needed to use this class). I also added several variables: m_LastReported, m_LastReceived (DateTime) and TCPFailureInterval (configurable), all dealing with connectivity.</p><p>Here's how my test Client application uses TCP:</p><ul><li>The Client connects to a TCP Server (I will provide a bare-bones Server example for your testing, in case you don't have a TCP Server handy).<br />
</li>
<li>The Server can either respond to the Client (once a Connection has been established):<br />
<ul><li>by sending data (the Server retrieves some data from a File, which is part of the solution)<br />
</li>
<li>or do nothing until the Client sends a "Handshake" message, and then respond to the Client by sending the data.<br />
</li>
</ul></li>
<li>That will, of course, depend on your application and the requirements of the Server that you are connecting.<br />
<ul><li>In my test example here, I originally wrote it so that the Server would send data as soon as the Client connects.<br />
</li>
<li>But then decided to change it so that the Server waits for the "Handshake" message before sending any data.<br />
</li>
</ul></li>
</ul><p>And, there's connectivity error handling:</p><ul><li>If the Server is not available when the Client first starts, the Client will continue to try to Connect, periodically logging Connect attempts at a configurable interval.<br />
</li>
<li>If the Server goes down, the Client continually tries to Connect again, periodically logging Connect attempts at a configurable interval (in the tmrTestConnection_Elapsed event handler).<br />
</li>
<li>While the Client is connected to the Server, if data is not received on a regular basis, it is logged periodically at a configurable interval (also in the tmrTestConnection_Elapsed).<br />
</li>
</ul><p>There's too much code to post here in my blog. I'll post bits and pieces of it to illustrate the above points, but I've zipped up the two solutions and they are on my Google Drive: here’s the link for the <a href="https://drive.google.com/file/d/1gChN5dthbyQmgcEihZqTYjUMtGXZpcd-/view?usp=sharing" target="_blank">Client</a> and here’s the link for the <a href="https://drive.google.com/file/d/1bxPawHvkk9ZuxNqC-U-F5Q_X5t-UjpX0/view?usp=sharing" target="_blank">Server</a> . The Client zip file also includes the original code from DaniWeb (not added to the project, but the file DaniWeb.cs is with all the other files), but you should still take a look at the DaniWeb link that I posted at the start of this blog. It might be a good idea to download my zip files now and follow along:</p><p>The EventDrivenTCPClient is not supposed to be used directly. There is another class, TcpListener, that does the job of starting it up and hooking up a few events and then calling its Connect() method to get it all started. Here is the code for the StartListener() method in the TcpListener class:</p><br />
<div id="codeSnippetWrapper"><pre id="codeSnippet" style="border-top-style: none; overflow: visible; font-size: 10pt; font-family: 'Courier New', courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #e8d8b7"><span style="color: #0000ff">protected</span> <span style="color: #0000ff">virtual</span> <span style="color: #0000ff">void</span> StartListener()
{
<span style="color: #0000ff">if</span> (<span style="color: #0000ff">this</span>.TestFromFiles)
{
<span style="color: #0000ff">this</span>.GetDataFromFile();
<span style="color: #0000ff">return</span>;
}
<span style="color: #0000ff">this</span>.TcpEvent = <span style="color: #0000ff">new</span> EventDrivenTCPClient(IPAddress.Parse(<span style="color: #0000ff">this</span>.ipAddress), <span style="color: #0000ff">this</span>.Port);
<span style="color: #0000ff">if</span> (<span style="color: #0000ff">this</span>.ReconnectInterval != 0)
<span style="color: #0000ff">this</span>.TcpEvent.ReconnectInterval = <span style="color: #0000ff">this</span>.ReconnectInterval;
<span style="color: #0000ff">this</span>.TcpEvent.ConnectionStatusChanged += <span style="color: #0000ff">new</span> EventDrivenTCPClient.delConnectionStatusChanged(TcpEvent_ConnectionStatusChanged);
<span style="color: #0000ff">this</span>.TcpEvent.DataReceived += <span style="color: #0000ff">new</span> EventDrivenTCPClient.delDataReceived(TcpEvent_DataReceived);
<span style="color: #0000ff">this</span>.TcpEvent.Connect();
}
</pre></div><p>I'll explain the purpose of the TestFromFiles in a minute, because as you notice from the above code, it is not starting up anything! There is a method to my madness, however, and I will get to that soon.</p><p>So, if you're not testing from files, you'll receive the data from the Server in the TcpEvent_DataReceived() event handler. The TcpEvent (aka the EventDrivenTCPClient) fires the event whenever data is received from the TCP port. Now, here's where more work needs to be done, here in the TcpListener class ... because the data that is received from the TcpEvent, is in chunks based on the buffer size. We need to parse out that data into meaningful complete pieces of data. </p>In other words, the data received can be a partial set of data,  in which case we have to continue waiting to receive the rest of the set ...<br />
Or it could contain the rest of the set and part of the next one, in which case, we'll do something with the complete set and wait to receive the rest of the next one ...<br />
Or it could contain the rest of the set and complete multiple sets, in which case, we'll do something with the multiple complete sets.<br />
<p>I just so happen to have a BufferedDataParser class that will do just that (see the DataParser.cs file). The TcpEvent_DataReceived() event handler does only one thing: it calls the ProcessDataReceived() method, which makes use of the DataParser, like so:</p><br />
<div id="codeSnippetWrapper"><pre id="codeSnippet" style="border-top-style: none; overflow: visible; font-size: 10pt; font-family: 'Courier New', courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #e8d8b7"><span style="color: #0000ff">protected</span> <span style="color: #0000ff">void</span> ProcessDataReceived(<span style="color: #0000ff">object</span> data)
{
<span style="color: #0000ff">if</span> (<span style="color: #0000ff">this</span>.DataParser != <span style="color: #0000ff">null</span>)
{
List<<span style="color: #0000ff">string</span>> DataList = <span style="color: #0000ff">this</span>.DataParser.ProcessDataReceived(<span style="color: #0000ff">ref</span> buffer, data.ToString());
<span style="color: #0000ff">foreach</span> (<span style="color: #0000ff">string</span> Xml <span style="color: #0000ff">in</span> DataList)
{
<span style="color: #0000ff">this</span>.SendMessage(Xml);
<span style="color: #0000ff">if</span> (<span style="color: #0000ff">this</span>.IsRunningFromConsole)
{
Console.WriteLine(<span style="color: #006080">"******************* Begin Raw Data ***********************"</span>);
Console.WriteLine(Xml);
Console.WriteLine(<span style="color: #006080">"*********************** End Raw *************************"</span>);
Console.WriteLine(<span style="color: #006080">"Length: {0}"</span>, Xml.Length);
}
}
}
<span style="color: #0000ff">else</span>
{
LogOutput.WriteLine(<span style="color: #006080">"No DataParser!"</span>);
<span style="color: #0000ff">if</span> (<span style="color: #0000ff">this</span>.IsRunningFromConsole)
Console.WriteLine(<span style="color: #006080">"Length: {0}"</span>, data.ToString().Length);
<span style="color: #0000ff">this</span>.SendMessage(data.ToString());
}
}
</pre></div><p>Notice in the code above, the parameter "ref buffer" in the call to the DataParser.ProcessDataReceived(ref buffer, data.ToString()) method. That gives the continuity necessary for the DataParser to contain the entire partial set of data with every chunk of data received from the TCP port, until the Parser determines it has at least a full set of data (the current chunk of data may contain a partial set or multiple sets of data, hence the need for a List<string> returned from the Parser).</p><p>The BufferedDataParser is an abstract class, that is meant to be inherited by different kinds of Parsers that rely on receiving buffered data. I've included two different kinds of Parsers (one of which is demonstrated in the application). So, here's the abstract class:</p><br />
<div id="codeSnippetWrapper"><pre id="codeSnippet" style="border-top-style: none; overflow: visible; font-size: 10pt; font-family: 'Courier New', courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #e8d8b7"><span style="color: #0000ff">public</span> <span style="color: #0000ff">abstract</span> <span style="color: #0000ff">class</span> BufferedDataParser : IBufferedDataParser
{
<span style="color: #cc6633">#region</span> Declarations
<span style="color: #0000ff">protected</span> <span style="color: #0000ff">string</span> HeartBeat = <span style="color: #006080">"<?xml version=\"1.0\" encoding=\"UTF-8\"?><ENDOFXML/>"</span>;
<span style="color: #0000ff">protected</span> <span style="color: #0000ff">string</span> ValidStart = <span style="color: #006080">"<?xml version=\"1.0\" encoding=\"UTF-8\"?>"</span>;
<span style="color: #0000ff">protected</span> <span style="color: #0000ff">string</span> ValidEnd = <span style="color: #006080">"</AXmlTargets>"</span>;
<span style="color: #0000ff">protected</span> <span style="color: #0000ff">bool</span> IncludeDelimiters = <span style="color: #0000ff">true</span>;
<span style="color: #cc6633">#endregion</span>
<span style="color: #cc6633">#region</span> Methods
<span style="color: #0000ff">public</span> List<<span style="color: #0000ff">string</span>> ProcessDataReceived(<span style="color: #0000ff">ref</span> <span style="color: #0000ff">string</span> buffer, <span style="color: #0000ff">string</span> dataReceived)
{
List<<span style="color: #0000ff">string</span>> DataList = <span style="color: #0000ff">new</span> List<<span style="color: #0000ff">string</span>>();
<span style="color: #0000ff">try</span>
{
<span style="color: #008000">//add received data to the buffer</span>
buffer += dataReceived;
<span style="color: #0000ff">this</span>.RemoveHeartbeatData(<span style="color: #0000ff">ref</span> buffer);
<span style="color: #0000ff">int</span> whileLoopWatchdog = 0;
<span style="color: #0000ff">while</span> (buffer.Length > 0)
{
<span style="color: #0000ff">this</span>.RemoveDataPrecedingStart(<span style="color: #0000ff">ref</span> buffer);
<span style="color: #008000">//verify that a complete message is present, if so process just that</span>
<span style="color: #0000ff">string</span> Complete = <span style="color: #0000ff">this</span>.ProcessCompleteMessage(<span style="color: #0000ff">ref</span> buffer);
<span style="color: #0000ff">if</span> (Complete.IsNotNullOrEmpty())
{
<span style="color: #0000ff">string</span> Xml;
<span style="color: #0000ff">if</span> (<span style="color: #0000ff">this</span>.IncludeDelimiters)
Xml = Complete;
<span style="color: #0000ff">else</span>
Xml = <span style="color: #0000ff">this</span>.ParseOutDelimiters(Complete);
DataList.Add(Xml);
<span style="color: #008000">//remove the data that was pulled out for processing</span>
<span style="color: #008000">//this will replace multiple identical occurrences but that</span>
<span style="color: #008000">//is fine</span>
buffer = buffer.Replace(Complete, <span style="color: #006080">""</span>);
}
<span style="color: #008000">//HACK: prevent endless while loop</span>
<span style="color: #008000">//(although 20+ complete sets of data at once probably wouldn't</span>
<span style="color: #008000">//happen, and if it did the remainder would be caught on</span>
<span style="color: #008000">//next data receive)</span>
whileLoopWatchdog++;
<span style="color: #0000ff">if</span> (whileLoopWatchdog > 20)
{
whileLoopWatchdog = 0;
<span style="color: #0000ff">break</span>;
}
}
}
<span style="color: #0000ff">catch</span> (Exception ex)
{
LogOutput.WriteLine(ex);
}
<span style="color: #0000ff">return</span> DataList;
}
<span style="color: #0000ff">protected</span> <span style="color: #0000ff">virtual</span> <span style="color: #0000ff">void</span> RemoveHeartbeatData(<span style="color: #0000ff">ref</span> <span style="color: #0000ff">string</span> buffer)
{
<span style="color: #0000ff">int</span> whileLoopWatchdog = 0;
<span style="color: #008000">//remove any "heartbeat" data</span>
<span style="color: #0000ff">while</span> (buffer.Contains(HeartBeat))
{
<span style="color: #008000">//this will replace multiple identical occurrences but that</span>
<span style="color: #008000">//is fine</span>
buffer = buffer.Replace(HeartBeat, <span style="color: #006080">""</span>);
<span style="color: #008000">//HACK: prevent endless while loop</span>
<span style="color: #008000">//(although 100+ heartbeats should never happen)</span>
whileLoopWatchdog++;
<span style="color: #0000ff">if</span> (whileLoopWatchdog > 100)
{
<span style="color: #0000ff">break</span>;
}
}
}
<span style="color: #0000ff">protected</span> <span style="color: #0000ff">virtual</span> <span style="color: #0000ff">void</span> RemoveDataPrecedingStart(<span style="color: #0000ff">ref</span> <span style="color: #0000ff">string</span> buffer)
{
<span style="color: #008000">//discard any text that precedes the valid start</span>
<span style="color: #0000ff">if</span> (buffer.IndexOf(ValidStart) > 0)
{
buffer = buffer.Substring(
buffer.IndexOf(ValidStart));
}
}
<span style="color: #0000ff">protected</span> <span style="color: #0000ff">virtual</span> <span style="color: #0000ff">string</span> ProcessCompleteMessage(<span style="color: #0000ff">ref</span> <span style="color: #0000ff">string</span> buffer)
{
<span style="color: #0000ff">string</span> Complete = <span style="color: #006080">""</span>;
<span style="color: #0000ff">if</span> ((buffer.StartsWith(ValidStart)) && (buffer.Contains(ValidEnd)) && (buffer.IndexOf(ValidStart) < buffer.IndexOf(ValidEnd)))
{
Complete = buffer.Substring(buffer.IndexOf(ValidStart),
buffer.IndexOf(ValidEnd) + ValidEnd.Length - buffer.IndexOf(ValidStart));
}
<span style="color: #0000ff">return</span> Complete;
}
<span style="color: #0000ff">protected</span> <span style="color: #0000ff">virtual</span> <span style="color: #0000ff">string</span> ParseOutDelimiters(<span style="color: #0000ff">string</span> Complete)
{
<span style="color: #0000ff">return</span> Complete.Substring(Complete.IndexOf(ValidStart) + ValidStart.Length, Complete.IndexOf(ValidEnd) - ValidStart.Length);
}
<span style="color: #cc6633">#endregion</span>
}</pre></div><p>Some DataParsers, simply need to use different delimiters and let the base class handle everything else, like the StxEtxDataParser: </p><br />
<div id="codeSnippetWrapper"><pre id="codeSnippet" style="border-top-style: none; overflow: visible; font-size: 10pt; font-family: 'Courier New', courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #e8d8b7"><span style="color: #0000ff">public</span> <span style="color: #0000ff">class</span> StxEtxDataParser :BufferedDataParser
{
<span style="color: #0000ff">public</span> StxEtxDataParser()
{
<span style="color: #0000ff">this</span>.HeartBeat = <span style="color: #006080">"no heartbeat"</span>;
<span style="color: #0000ff">this</span>.ValidStart = <span style="color: #0000ff">new</span> <span style="color: #0000ff">string</span>(<span style="color: #0000ff">new</span> <span style="color: #0000ff">char</span>[] { (<span style="color: #0000ff">char</span>)2 });
<span style="color: #0000ff">this</span>.ValidEnd = <span style="color: #0000ff">new</span> <span style="color: #0000ff">string</span>(<span style="color: #0000ff">new</span> <span style="color: #0000ff">char</span>[] { (<span style="color: #0000ff">char</span>)3 });
<span style="color: #0000ff">this</span>.IncludeDelimiters = <span style="color: #0000ff">false</span>;
}
}</pre></div><p>STX/ETX are common delimiters for TCP transmissions. STX is a (char)2 and ETX is a (char)3. </p><p>The DataParsers.cs file also contains a CountDelimiterDataProcessor. It inherits from the BufferedDataParser also, but has a totally different way of parsing the received data. I won't post it here, you can check it out when you look at the downloaded zip file.</p><p>Now, as promised, I'll get back to the purpose of TestFromFiles: You should have sample data from the Server you're trying to connect to saved in a file. You obviously have to have this, or how would you ever be able to develop an application without knowing something about the data!?! By using this saved file to test from, you can quickly determine if your DataParser is parsing the data correctly without worrying about connecting to a Server. If there's a problem, keep refactoring your DataParser (not the abstract class! That one should not be touched!) until it's perfect.</p><p>I think that's about it for now. Download the two zip files and give it a test yourself. It's good to go "right out of the box" ... you only have to change the ipaddress (and port if you want to) in the app.configs of both Client and Server.</p><p>Happy Coding!  =0)</p>Bonniehttp://www.blogger.com/profile/11241425687786973525noreply@blogger.com0tag:blogger.com,1999:blog-33753991.post-33989590648788447402018-09-29T18:30:00.001-07:002018-09-29T18:30:25.590-07:00VS2017 - A Few Idiosyncrasies<p>I recently found some time to install the most recent version of Visual Studio 2017 and start using it for real work. I had actually had a few of the early pre-Release versions installed, but hadn't yet used them for anything other than "playing" (didn't want to use a pre-Release version for real work ... I'm not *that* much into "cutting edge"). I'd been so busy that I just continued using VS 2015 for work, even after the official release of VS2017. </p><p>What actually prompted me to install and start using VS2017 was that my laptop died. When I got the replacement, of course I had to re-install my entire development environment (not to mention a bunch of personal stuff not related to work). So, what the heck, might as well go with the latest and greatest!</p><p>I quickly found out that there were a few idiosyncrasies where things differed from my earlier VS 2015 version. I wanted to put some of it back to "my way":</p><ul> <li><b>Some shortcut keys aren't what they used to be.</b> But, short-cut keys are easy to change:<br />
<ul> <li>Go to Tools > Options > Environment > Keyboard</li>
<li>Find the command shortcut you want to change and in the "Press shortcut keys" textbox, just do as it says ... press the keys.</li>
<li>Click OK when you're done</li>
<li>For example, Building a Solution has been shortcut F6 for so many, many years (even before Visual Studio was designed) that it's ingrained in my finger muscle-memory. F6 is a "complement" to F5  (for Build and Execute Debugging). However, it seems to have changed at some point (I don't know if it changed in this VS version or some previous one) to Ctrl+Shift+B. I just could *not* get used to that, so I changed it back to F6 and now I'm happy.</li>
</ul> </li>
<li><b>Outlining :</b></li>
<ul> <li>The Outlining shortcut keys work a little differently than they used to in previous versions of VS.</li>
<li>They all used to be specified as Ctrl+M, SecondKey ... but now it is Ctrl+M, Ctrl+SecondKey</li>
<ul> <li>Just keep holding the Ctrl down during both M and SecondKey, rather than making it two different key combinations as shown.</li>
<li>It works slightly different than in previous versions of VS, where either one of these worked:<br />
<ul> <li>continuously hold down the Ctrl key</li>
<li>or do Ctrl+M, let go of the Ctrl and type SecondKey</li>
<li>Now, if you try that second option, you get an error and it does nothing.</li>
</ul> </li>
</ul> <li><b>Collapse to Definitions</b></li>
<ul> <li>By default now, it does *NOT* Collapse the Regions! Arrgghh!! This particular "feature" is what prompted me to write this blog post, because it <b>*really*</b> irritated me!!!  But, not to worry, it can be fixed. Yay!</li>
<ul> <li>Tools > Options > Text Editors > C# > Advanced > Outlining > check "Collapse #regions when collapsing to definitions"</li>
</ul> </ul> </ul> <li><b>CodeLens is a great feature</b> and it's been around since at least VS2015 (although I wasn't using it then). Be aware that it's not available on the VS2017 Community edition (only Professional and higher). You can read about it here:  <a href="https://docs.microsoft.com/en-us/visualstudio/ide/find-code-changes-and-other-history-with-codelens?view=vs-2017">https://docs.microsoft.com/en-us/visualstudio/ide/find-code-changes-and-other-history-with-codelens?view=vs-2017</a></li>
<ul> <li>But, here's the downside ... it puts its cool little goodies just where <b>I DO NOT WANT THEM</b>!!</li>
<li>Here's what my code looks like without CodeLens, nice and compact!</li>
<a href="https://3.bp.blogspot.com/-CKBXyHDjqvo/W7ASF9iHnpI/AAAAAAAAAM8/BMlI1h2luCslGLWdXKnRey5LG_azVu97ACPcBGAYYCw/s1600/Blog_2018-09-20_Pic1.png" imageanchor="1" ><img border="0" src="https://3.bp.blogspot.com/-CKBXyHDjqvo/W7ASF9iHnpI/AAAAAAAAAM8/BMlI1h2luCslGLWdXKnRey5LG_azVu97ACPcBGAYYCw/s1600/Blog_2018-09-20_Pic1.png" data-original-width="730" data-original-height="494" /></a>
<li>Here's what it looks like with CodeLens, the look of my code is now quite annoying (to me anyway):</li>
<li><br />
<a href="https://2.bp.blogspot.com/-AdwDGNtmz3k/W7ASRFzjCFI/AAAAAAAAANA/1rYbYJwH26wBosv2I6nepJGvgIcWO1ZfQCPcBGAYYCw/s1600/Blog_2018-09-20_Pic2.png" imageanchor="1" ><img border="0" src="https://2.bp.blogspot.com/-AdwDGNtmz3k/W7ASRFzjCFI/AAAAAAAAANA/1rYbYJwH26wBosv2I6nepJGvgIcWO1ZfQCPcBGAYYCw/s640/Blog_2018-09-20_Pic2.png" width="640" height="481" data-original-width="1550" data-original-height="1164" /></a></li>
<li>But, you can disable the whole thing with an Options setting:</li>
<ul> <li>Tools > Options > Text Editors > All Languages > CodeLens > uncheck "Enable CodeLens"</li>
</ul> <li>I would really have preferred an option to change the position of where the CodeLens information is displayed, because as I said I believe some of what it does can be quite helpful. But, unfortunately, I don't think that there is anyway to do it, at least not that I know of.</li>
</ul></ul><p>Well, that's about it for now. So far, I'm glad it's a short list!!  Happy Coding!!  =0)</p>Bonniehttp://www.blogger.com/profile/11241425687786973525noreply@blogger.com1tag:blogger.com,1999:blog-33753991.post-90121357762883715922018-08-19T15:22:00.000-07:002018-08-19T15:22:14.975-07:00ComboBox Gotcha #2<p>Recently, I participated in an MSDN Forum thread about problems with ComboBoxes, SelectedValue and SelectedIndex. It reminded me of a "gotcha" that I knew about a long time ago, but had forgotten about. I haven't been doing any development on Windows Forms apps in a long time (I have been doing only back-end server side stuff for more than a few years now), although many years ago I was responsible for a pretty extensive Windows Forms "Framework" for our developers to use for all of our company's applications. So, I knew about this then (and I'm sure that I built it into the Framework's base classes DataBinding methods). But, I digress ... let's get to a description of the problem and how to make sure it doesn't happen to you!</p><p>Say that in your application, you need to do something with the SelectedValue of a ComboBox. So, you create an event handler for either the .SelectedIndexChanged event or the .SelectedValueChanged event. But it doesn't work the way you expect it to and you're getting exceptions sometimes. What could be the problem? Let's look at the result of some debugging code placed in each of those event handlers to try and troubleshoot the problem:</p><p>Here's the debugging code:</p><div id="codeSnippetWrapper"> <pre id="codeSnippet" style="border-top-style: none; overflow: visible; font-size: 10pt; font-family: 'Courier New', courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #e8d8b7"><span style="color: #0000ff">private</span> <span style="color: #0000ff">void</span> cboCustomer_SelectedValueChanged(<span style="color: #0000ff">object</span> sender, EventArgs e)<br />{<br /> Console.WriteLine($<span style="color: #006080">"Value Changed: SelectedIndex is {cboCustomer.SelectedIndex}"</span>);<br /> Console.WriteLine($<span style="color: #006080">"Value Changed: SelectedValue is {cboCustomer.SelectedValue}, is a {cboCustomer.SelectedValue.GetType()}"</span>);<br /> Console.WriteLine(<span style="color: #006080">""</span>);<br /> <span style="color: #008000">// the rest of your code is here</span><br />}<br /><span style="color: #0000ff">private</span> <span style="color: #0000ff">void</span> cboCustomer_SelectedIndexChanged(<span style="color: #0000ff">object</span> sender, EventArgs e)<br />{<br /> Console.WriteLine($<span style="color: #006080">"Index Changed: SelectedIndex is {cboCustomer.SelectedIndex}"</span>);<br /> Console.WriteLine($<span style="color: #006080">"Index Changed: SelectedValue is {cboCustomer.SelectedValue}, is a {cboCustomer.SelectedValue.GetType()}"</span>);<br /> Console.WriteLine(<span style="color: #006080">""</span>);<br /> <span style="color: #008000">// the rest of your code is here</span><br />}<br /></pre></div><p>And here are the results:</p><div id="codeSnippetWrapper"> <pre id="codeSnippet" style="border-top-style: none; overflow: visible; font-size: 10pt; font-family: 'Courier New', courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #e8d8b7">Value Changed: SelectedIndex is 0<br />Value Changed: SelectedValue is System.Data.DataRowView, is a System.Data.DataRowView<br /> <br />Index Changed: SelectedIndex is 0<br />Index Changed: SelectedValue is System.Data.DataRowView, is a System.Data.DataRowView<br /> <br />Value Changed: SelectedIndex is 0<br />Value Changed: SelectedValue is System.Data.DataRowView, is a System.Data.DataRowView<br /> <br />Value Changed: SelectedIndex is 0<br />Value Changed: SelectedValue is System.Data.DataRowView, is a System.Data.DataRowView<br /> <br />Index Changed: SelectedIndex is 0<br />Index Changed: SelectedValue is System.Data.DataRowView, is a System.Data.DataRowView<br /> <br />Value Changed: SelectedIndex is 0<br />Value Changed: SelectedValue is 01, is a System.String</pre></div><p>This is obviously, not a good thing ... the events are firing way too many times. And why is the SelectedValue a DataRowView at first (in my example I am using a DataTable as the Combo's DataSource)?  In fact, these events should not be firing at all at this time ... we have simply set up the databinding for the ComboBox.  Wow! What did we do wrong?</p><p>Here's the databinding code (remember that this is <strong>BAD CODE</strong>!)</p><div id="codeSnippetWrapper"> <pre id="codeSnippet" style="border-top-style: none; overflow: visible; font-size: 10pt; font-family: 'Courier New', courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #e8d8b7"><span style="color: #0000ff">this</span>.bsCustomers = <span style="color: #0000ff">new</span> BindingSource();<br /><span style="color: #0000ff">this</span>.bsCustomers.DataSource = <span style="color: #0000ff">this</span>.oDataFromXML.Tables[<span style="color: #006080">"Customer"</span>];<br /> <br /><span style="color: #0000ff">this</span>.cboCustomer.SelectedIndexChanged += cboCustomer_SelectedIndexChanged;<br /><span style="color: #0000ff">this</span>.cboCustomer.SelectedValueChanged += cboCustomer_SelectedValueChanged;<br /> <br /><span style="color: #0000ff">this</span>.cboCustomer.DataSource = <span style="color: #0000ff">this</span>.bsCustomers;<br /><span style="color: #0000ff">this</span>.cboCustomer.DisplayMember = <span style="color: #006080">"Last Name"</span>;<br /><span style="color: #0000ff">this</span>.cboCustomer.ValueMember = <span style="color: #006080">"CustomerID"</span>;</pre></div><p>The problem exists <strong>because the DataSource is set first</strong>. The subsequent statements setting the DisplayMember and ValueMember each fire the events (because now the SelectedValue Properties are changed by setting those Members).</p><p>There is an easy way to fix this, and perhaps you've already guessed it!  Set the DataSource *<strong>after</strong>* setting the DisplayMember and ValueMember. </p><div id="codeSnippetWrapper"> <pre id="codeSnippet" style="border-top-style: none; overflow: visible; font-size: 10pt; font-family: 'Courier New', courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #e8d8b7"><span style="color: #0000ff">this</span>.bsCustomers = <span style="color: #0000ff">new</span> BindingSource();<br /><span style="color: #0000ff">this</span>.bsCustomers.DataSource = <span style="color: #0000ff">this</span>.oDataFromXML.Tables[<span style="color: #006080">"Customer"</span>];<br /> <br /><span style="color: #0000ff">this</span>.cboCustomer.SelectedIndexChanged += cboCustomer_SelectedIndexChanged;<br /><span style="color: #0000ff">this</span>.cboCustomer.SelectedValueChanged += cboCustomer_SelectedValueChanged;<br /><br /><span style="color: #0000ff">this</span>.cboCustomer.DisplayMember = <span style="color: #006080">"Last Name"</span>;<br /><span style="color: #0000ff">this</span>.cboCustomer.ValueMember = <span style="color: #006080">"CustomerID"</span>;<br /><span style="color: #0000ff"><strong>this</span>.cboCustomer.DataSource = <span style="color: #0000ff">this</span>.bsCustomers;</strong></pre></div><p>But wait ... what's going on? Now the code in the event handlers throws an exception!</p><div id="codeSnippetWrapper"> <pre id="codeSnippet" style="border-top-style: none; overflow: visible; font-size: 10pt; font-family: 'Courier New', courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #e8d8b7">Value Changed: SelectedIndex is -1<br />Exception thrown: 'System.NullReferenceException' in WindowsApplication1.exe</pre></div><p>That's because, now that we've done the databinding *<strong>correctly</strong>*, initially nothing is selected (this only happens once) and consequently the SelectedIndex is -1 and the SelectedValue will be null.  You *<strong>must</strong>* have code to check that SelectedIndex is not negative! Especially if you databind the ComboBox to a DataTable that initially has no data in it! When there *<strong>is</strong>* data, the first item will then be automatically selected and the SelectedIndex will be 0 ... but if there is *<strong>no</strong>* data, obviously nothing can be selected. The SelectedIndex will be -1 to indicate that.</p><div id="codeSnippetWrapper"> <pre id="codeSnippet" style="border-top-style: none; overflow: visible; font-size: 10pt; font-family: 'Courier New', courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #e8d8b7"><span style="color: #0000ff">private</span> <span style="color: #0000ff">void</span> cboCustomer_SelectedValueChanged(<span style="color: #0000ff">object</span> sender, EventArgs e)<br />{<br /> Console.WriteLine($<span style="color: #006080">"Value Changed: SelectedIndex is {cboCustomer.SelectedIndex}"</span>);<br /> <strong><span style="color: #0000ff">if</span> (cboCustomer.SelectedIndex > -1)</strong><br /> {<br /> Console.WriteLine($<span style="color: #006080">"Value Changed: SelectedValue is {cboCustomer.SelectedValue}, is a {cboCustomer.SelectedValue.GetType()}"</span>);<br /> Console.WriteLine(<span style="color: #006080">""</span>);<br /> <span style="color: #008000">// the rest of your code is here</span><br /> }<br />}<br /><span style="color: #0000ff">private</span> <span style="color: #0000ff">void</span> cboCustomer_SelectedIndexChanged(<span style="color: #0000ff">object</span> sender, EventArgs e)<br />{<br /> Console.WriteLine($<span style="color: #006080">"Index Changed: SelectedIndex is {cboCustomer.SelectedIndex}"</span>);<br /> <strong><span style="color: #0000ff">if</span> (cboCustomer.SelectedIndex > -1)</strong><br /> {<br /> Console.WriteLine($<span style="color: #006080">"Index Changed: SelectedValue is {cboCustomer.SelectedValue}, is a {cboCustomer.SelectedValue.GetType()}"</span>);<br /> Console.WriteLine(<span style="color: #006080">""</span>);<br /> <span style="color: #008000">// the rest of your code is here</span><br /> }<br />}</pre></div><p>And the results now:</p><div id="codeSnippetWrapper"> <pre id="codeSnippet" style="border-top-style: none; overflow: visible; font-size: 10pt; font-family: 'Courier New', courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #e8d8b7">Value Changed: SelectedIndex is -1<br />Value Changed: SelectedIndex is 0<br />Value Changed: SelectedValue is 01, is a System.String<br /> <br />Index Changed: SelectedIndex is 0<br />Index Changed: SelectedValue is 01, is a System.String</pre></div><br />
<p>In a similar vein, I wrote a blog post back in 2012 with the title "ComboBox Gotchas". But, it was about a totally different problem ... a ComboBox that is in sync with other controls on the Form, when it's not supposed to be. See it here, if you're interested: <a href="https://geek-goddess-bonnie.blogspot.com/2012/12/combobox-gotchas.html" target="_blank">https://geek-goddess-bonnie.blogspot.com/2012/12/combobox-gotchas.html</a></p><br />
Bonniehttp://www.blogger.com/profile/11241425687786973525noreply@blogger.com6tag:blogger.com,1999:blog-33753991.post-46344028819465787042018-05-27T16:35:00.000-07:002018-05-27T16:35:58.281-07:00(A)Synchronicity<p>Back in the day, "The Police" sang a song about Synchronicity. Today, I'm writing a blog about Asynchronicity.  ;0)</p><p>To be more precise, this blog post will explore whether or not there are performance differences between the various ways to write asynchronous code. I will be looking specifically at the code needed for a multi-threaded application, where the threads just do their thing, and we don't care what they're doing (in other words, kind of a Fire-And-Forget type of thing). I will explore these three methodologies:</p><ul> <li> System.Threading.Thread.Start()</li>
<li>System.Threading.ThreadPool.QueueUserWorkItem()</li>
<li>System.Threading.Tasks.Task.Run()</li>
</ul><p>I'm betting that the latter two methods are simply syntactic sugar on top of the original Thread.Start() ... let's see if we can get some numerical evidence of that. And, just for the heck of it, I'm going to throw in a freebie ... I'm going to compare the Task.Run() both without and with a .ConfigureAwait(false) ... (not that it matters for this discussion). So, here's the code I used for testing this (called from a Button Click so I could easily run it again):</p><div id="codeSnippetWrapper"> <pre id="codeSnippet" style="border-top-style: none; overflow: visible; font-size: 10pt; font-family: 'Courier New', courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #e8d8b7"><span style="color: #0000ff">private</span> System.Diagnostics.Stopwatch stopWatchThread;<br /><span style="color: #0000ff">private</span> System.Diagnostics.Stopwatch stopWatchQueueUserWork;<br /><span style="color: #0000ff">private</span> System.Diagnostics.Stopwatch stopWatchTask;<br /><span style="color: #0000ff">private</span> System.Diagnostics.Stopwatch stopWatchTaskAwaitFalse;
<span style="color: #0000ff">private</span> <span style="color: #0000ff">void</span> CompareThreeAsyncMethods()<br />{<br /> <span style="color: #0000ff">this</span>.stopWatchThread = <span style="color: #0000ff">new</span> Stopwatch();<br /> Console.WriteLine(<span style="color: #006080">"Start Thread at {0}"</span>, DateTime.Now);<br /> <span style="color: #0000ff">this</span>.stopWatchThread.Start();<br /> ThreadStart threadStart = <span style="color: #0000ff">new</span> ThreadStart(RunThread);<br /> Thread myThread = <span style="color: #0000ff">new</span> Thread(threadStart);<br /> myThread.Start();
<span style="color: #0000ff">this</span>.stopWatchQueueUserWork = <span style="color: #0000ff">new</span> Stopwatch();<br /> Console.WriteLine(<span style="color: #006080">"Start QueueUserWork at {0}"</span>, DateTime.Now);<br /> stopWatchQueueUserWork.Start();<br /> ThreadPool.QueueUserWorkItem(WorkToDo, <span style="color: #0000ff">new</span> WorkSettings() { stopWatch = stopWatchQueueUserWork, WorkName = <span style="color: #006080">"QueueUserWork"</span> });
<span style="color: #0000ff">this</span>.stopWatchTask = <span style="color: #0000ff">new</span> Stopwatch();<br /> Console.WriteLine(<span style="color: #006080">"Start Task at {0}"</span>, DateTime.Now);<br /> stopWatchTask.Start();<br /> Task.Run(() =><br /> {<br /> WorkToDo(<span style="color: #0000ff">new</span> WorkSettings() {stopWatch = stopWatchTask, WorkName = <span style="color: #006080">"Task"</span> });<br /> });
<span style="color: #0000ff">this</span>.stopWatchTaskAwaitFalse = <span style="color: #0000ff">new</span> Stopwatch();<br /> Console.WriteLine(<span style="color: #006080">"Start Task AwaitFalse at {0}"</span>, DateTime.Now);<br /> stopWatchTaskAwaitFalse.Start();<br /> Task.Run(() =><br /> {<br /> WorkToDo(<span style="color: #0000ff">new</span> WorkSettings() { stopWatch = stopWatchTaskAwaitFalse, WorkName = <span style="color: #006080">"TaskAwaitFalse"</span> });<br /> }).ConfigureAwait(<span style="color: #0000ff">false</span>);
Console.WriteLine(<span style="color: #006080">"Show results as threads complete ... {0}\r\n"</span>, DateTime.Now);<br />}<br /><span style="color: #0000ff">public</span> <span style="color: #0000ff">class</span> WorkSettings<br />{<br /> <span style="color: #0000ff">public</span> System.Diagnostics.Stopwatch stopWatch { get; set; }<br /> <span style="color: #0000ff">public</span> <span style="color: #0000ff">string</span> WorkName { get; set; }<br />}<br /><span style="color: #008000">// Need this only for the Thread option</span><br /><span style="color: #0000ff">private</span> <span style="color: #0000ff">void</span> RunThread()<br />{<br /> <span style="color: #0000ff">this</span>.WorkToDo(<span style="color: #0000ff">new</span> WorkSettings() { stopWatch = <span style="color: #0000ff">this</span>.stopWatchThread, WorkName = <span style="color: #006080">"Thread"</span> });<br />}
<span style="color: #0000ff">private</span> <span style="color: #0000ff">void</span> WorkToDo(<span style="color: #0000ff">object</span> obj)<br />{<br /> WorkSettings work = (WorkSettings)obj;<br /> <span style="color: #0000ff">for</span> (<span style="color: #0000ff">int</span> i = 0; i < 2147483647; i++) <span style="color: #008000">// largest int 2,147,483,647</span><br /> {<br /> <span style="color: #008000">//Thread.Sleep(500);</span><br /> }<br /><br /> work.stopWatch.Stop();<br /> Console.WriteLine(<span style="color: #006080">"{0} Stopped at {1}. Elapsed Time {2} milliseconds\r\n"</span>, work.WorkName, DateTime.Now, work.stopWatch.ElapsedMilliseconds);<br />}</pre> <br /></div><p>By starting a StopWatch before I start running its Asynchronous method, I take into account any "prep" work that might be involved in starting the call to the method. If there is any, it should be reflected in the overall time to complete a method. Here are the results:</p><div id="codeSnippetWrapper"> <pre id="codeSnippet" style="border-top-style: none; overflow: visible; font-size: 10pt; font-family: 'Courier New', courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #e8d8b7">Start Thread at 5/26/2018 5:13:38 PM<br />Start QueueUserWork at 5/26/2018 5:13:38 PM<br />Start Task at 5/26/2018 5:13:38 PM<br />Start Task AwaitFalse at 5/26/2018 5:13:38 PM<br />Show results <span style="color: #0000ff">as</span> threads complete ... 5/26/2018 5:13:38 PM
Thread Stopped at 5/26/2018 5:13:44 PM. Elapsed Time 5669 milliseconds<br />Task Stopped at 5/26/2018 5:13:44 PM. Elapsed Time 5775 milliseconds<br />TaskAwaitFalse Stopped at 5/26/2018 5:13:44 PM. Elapsed Time 5836 milliseconds<br />QueueUserWork Stopped at 5/26/2018 5:13:44 PM. Elapsed Time 5859 milliseconds
<span style="color: #008000">// last (10th) time</span><br />Thread Stopped at 5/26/2018 5:18:14 PM. Elapsed Time 5890 milliseconds<br />TaskAwaitFalse Stopped at 5/26/2018 5:18:15 PM. Elapsed Time 5978 milliseconds<br />QueueUserWork Stopped at 5/26/2018 5:18:15 PM. Elapsed Time 5982 milliseconds<br />Task Stopped at 5/26/2018 5:18:15 PM. Elapsed Time 6008 milliseconds<br /> <br /><span style="color: #008000">// Average</span><br />Average <span style="color: #0000ff">for</span> Thread: 5986 milliseconds<br />Average <span style="color: #0000ff">for</span> Task: 5964 milliseconds<br />Average <span style="color: #0000ff">for</span> TaskAwaitFalse: 5973 milliseconds<br />Average <span style="color: #0000ff">for</span> QueueUserWork: 6048 milliseconds</pre><br />
</div>Judging by those results, I think that the minuscule difference might be attributed to them all running at once & taking up CPU resources. But, we can test that as well. I'm going to run them individually. Run one. Let it complete. Run another. Let it complete. I wonder if the times will be *exact* then! Let's re-work the code to look like this:<br />
<br />
<div id="codeSnippetWrapper"> <pre id="codeSnippet" style="border-top-style: none; overflow: visible; font-size: 10pt; font-family: 'Courier New', courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #e8d8b7"><span style="color: #0000ff">private</span> CompareAsync methodIs = CompareAsync.Begin;<br /><span style="color: #0000ff">private</span> CompareAsync currentMethodRunning = CompareAsync.Begin;<br /><span style="color: #0000ff">private</span> <span style="color: #0000ff">void</span> CompareThreeAsyncMethodsIndividually()<br />{<br /> <span style="color: #0000ff">while</span> (methodIs != CompareAsync.Done)<br /> {<br /> <span style="color: #0000ff">if</span> (methodIs == CompareAsync.Begin)<br /> methodIs = CompareAsync.Thread;<br /> <span style="color: #0000ff">if</span> (methodIs == currentMethodRunning)<br /> <span style="color: #0000ff">continue</span>;<br /> <span style="color: #0000ff">switch</span> (methodIs)<br /> {<br /> <span style="color: #0000ff">case</span> CompareAsync.Thread:<br /> currentMethodRunning = methodIs;<br /> <span style="color: #0000ff">this</span>.stopWatchThread = <span style="color: #0000ff">new</span> Stopwatch();<br /> Console.WriteLine(<span style="color: #006080">"Start Thread at {0}"</span>, DateTime.Now);<br /> <span style="color: #0000ff">this</span>.stopWatchThread.Start();<br /> ThreadStart threadStart = <span style="color: #0000ff">new</span> ThreadStart(RunThread);<br /> Thread myThread = <span style="color: #0000ff">new</span> Thread(threadStart);<br /> myThread.Start();<br /> <span style="color: #0000ff">break</span>;<br /> <span style="color: #0000ff">case</span> CompareAsync.QueueUserWork:<br /> currentMethodRunning = methodIs;<br /> <span style="color: #0000ff">this</span>.stopWatchQueueUserWork = <span style="color: #0000ff">new</span> Stopwatch();<br /> Console.WriteLine(<span style="color: #006080">"Start QueueUserWork at {0}"</span>, DateTime.Now);<br /> stopWatchQueueUserWork.Start();<br /> ThreadPool.QueueUserWorkItem(WorkToDo, <span style="color: #0000ff">new</span> WorkSettings() { stopWatch = stopWatchQueueUserWork, WorkName = <span style="color: #006080">"QueueUserWork"</span> });<br /> <span style="color: #0000ff">break</span>;<br /> <span style="color: #0000ff">case</span> CompareAsync.Task:<br /> currentMethodRunning = methodIs;<br /> <span style="color: #0000ff">this</span>.stopWatchTask = <span style="color: #0000ff">new</span> Stopwatch();<br /> Console.WriteLine(<span style="color: #006080">"Start Task at {0}"</span>, DateTime.Now);<br /> stopWatchTask.Start();<br /> Task.Run(() =><br /> {<br /> WorkToDo(<span style="color: #0000ff">new</span> WorkSettings() { stopWatch = stopWatchTask, WorkName = <span style="color: #006080">"Task"</span> });<br /> });<br /> <span style="color: #0000ff">break</span>;<br /> <span style="color: #0000ff">case</span> CompareAsync.TaskAwaitFalse:<br /> currentMethodRunning = methodIs;<br /> <span style="color: #0000ff">this</span>.stopWatchTaskAwaitFalse = <span style="color: #0000ff">new</span> Stopwatch();<br /> Console.WriteLine(<span style="color: #006080">"Start Task AwaitFalse at {0}"</span>, DateTime.Now);<br /> stopWatchTaskAwaitFalse.Start();<br /> Task.Run(() =><br /> {<br /> WorkToDo(<span style="color: #0000ff">new</span> WorkSettings() { stopWatch = stopWatchTaskAwaitFalse, WorkName = <span style="color: #006080">"TaskAwaitFalse"</span> });<br /> }).ConfigureAwait(<span style="color: #0000ff">false</span>);<br /> <span style="color: #0000ff">break</span>;<br /> <span style="color: #0000ff">default</span>:<br /> <span style="color: #0000ff">break</span>;<br /> }<br /> }<br />}<br /></pre><br />
</div><br />
And added an extra bit at the end of the WorkToDo() method such that it would be able to determine which method would run next:<br />
<br />
<div id="codeSnippetWrapper"> <pre id="codeSnippet" style="border-top-style: none; overflow: visible; font-size: 10pt; font-family: 'Courier New', courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #e8d8b7"><span style="color: #0000ff">private</span> <span style="color: #0000ff">void</span> WorkToDo(<span style="color: #0000ff">object</span> obj)<br />{<br /> WorkSettings work = (WorkSettings)obj;<br /> <span style="color: #0000ff">for</span> (<span style="color: #0000ff">int</span> i = 0; i < 2147483647; i++) <span style="color: #008000">// largest int 2,147,483,647</span><br /> {<br /> <span style="color: #008000">//Thread.Sleep(500);</span><br /> }<br /> work.stopWatch.Stop();<br /> Console.WriteLine(<span style="color: #006080">"{0} Stopped at {1}. Elapsed Time {2} milliseconds\r\n"</span>, work.WorkName, DateTime.Now, work.stopWatch.ElapsedMilliseconds); <br /> <br /> <span style="color: #008000">// ADDED THIS</span><br /> <span style="color: #008000">// Set it to the next one</span><br /> <span style="color: #0000ff">switch</span> (methodIs)<br /> {<br /> <span style="color: #0000ff">case</span> CompareAsync.Thread:<br /> methodIs = CompareAsync.QueueUserWork;<br /> <span style="color: #0000ff">break</span>;<br /> <span style="color: #0000ff">case</span> CompareAsync.QueueUserWork:<br /> methodIs = CompareAsync.Task;<br /> <span style="color: #0000ff">break</span>;<br /> <span style="color: #0000ff">case</span> CompareAsync.Task:<br /> methodIs = CompareAsync.TaskAwaitFalse;<br /> <span style="color: #0000ff">break</span>;<br /> <span style="color: #0000ff">case</span> CompareAsync.TaskAwaitFalse:<br /> methodIs = CompareAsync.Done;<br /> <span style="color: #0000ff">break</span>;<br /> }<br />}<br /></pre><br />
</div>And now the results are this:<br />
<br />
<div id="codeSnippetWrapper"> <pre id="codeSnippet" style="border-top-style: none; overflow: visible; font-size: 10pt; font-family: 'Courier New', courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #e8d8b7">Start Thread at 5/26/2018 5:29:32 PM<br />Thread Stopped at 5/26/2018 5:29:37 PM. Elapsed Time 4877 milliseconds<br /> <br />Start QueueUserWork at 5/26/2018 5:29:37 PM<br />QueueUserWork Stopped at 5/26/2018 5:29:42 PM. Elapsed Time 4850 milliseconds<br /> <br />Start Task at 5/26/2018 5:29:42 PM<br />Task Stopped at 5/26/2018 5:29:47 PM. Elapsed Time 4918 milliseconds<br /> <br />Start Task AwaitFalse at 5/26/2018 5:29:47 PM<br />TaskAwaitFalse Stopped at 5/26/2018 5:29:52 PM. Elapsed Time 4978 milliseconds<br /> <br /><span style="color: #008000">// last time (10th) </span><br />Thread Stopped at 5/26/2018 5:32:37 PM. Elapsed Time 4910 milliseconds<br />QueueUserWork Stopped at 5/26/2018 5:32:42 PM. Elapsed Time 4821 milliseconds<br />Task Stopped at 5/26/2018 5:32:46 PM. Elapsed Time 4894 milliseconds<br />TaskAwaitFalse Stopped at 5/26/2018 5:32:51 PM. Elapsed Time 4924 milliseconds<br /> <br /><span style="color: #008000">// Average</span><br />Average <span style="color: #0000ff">for</span> Thread: 4986 milliseconds<br />Average <span style="color: #0000ff">for</span> QueueUserWork: 4975 milliseconds<br />Average <span style="color: #0000ff">for</span> Task: 4966 milliseconds<br />Average <span style="color: #0000ff">for</span> TaskAwaitFalse: 4962 milliseconds<br /></pre><br />
</div><p>Well now ... there's still a difference between the 4 methods, isn't there? However, it is still teeny. Running each of these individually (instead of starting all 4 methods at the same time, as I did in the first test) produces the same results pretty much, the difference being that each is about 1000 milliseconds faster than the first test. </p><p>The difference between the fastest & slowest averages for the second test is only about .2% and that's in milliseconds! I'd say that these various methodologies for running asynchronous threads, aren't really any different (statistically speaking). Hey, I just like to mess around with numbers.  ;0)</p><p>Happy coding!  =0)</p>Bonniehttp://www.blogger.com/profile/11241425687786973525noreply@blogger.com0tag:blogger.com,1999:blog-33753991.post-88651181359143438032018-02-25T16:20:00.000-08:002018-02-25T16:20:36.465-08:00Parent/Child DataBindingI have seen a few questions lately on the MSDN Forums about synchronizing parent/child data on a Windows Form. I thought that I had written a blog post about this years ago, but apparently I'm mis-remembering (probably remembering all the Forum posts that I've answered in the past)! This particular post will deal with parent/child using DataSets, and we can deal with this in two ways: using DataRelations or using the Filter property of the child BindingSource.<br />
<br />
<strong>First, let's take a look at using DataRelations</strong> ... this is a pretty straightforward process (especially if you are already using DataRelations).<br />
<br />
<div id="codeSnippetWrapper">
<pre id="codeSnippet" style="background-color: #e8d8b7; color: black; direction: ltr; font-family: "courier new" , "courier" , monospace; font-size: 10pt; line-height: 12pt; margin: 0em; overflow: visible; padding: 0px; text-align: left; width: 100%;"><span style="color: green;">// First, you'll need two BindingSources:</span>
<span style="color: blue;">private</span> BindingSource bsParent;
<span style="color: blue;">private</span> BindingSource bsChild;</pre>
<br />
You obviously need to have a DataRelation between two DataTables in your DataSet. If you don't already know how to set that up, it's pretty straightforward:</div>
<br />
<div id="codeSnippetWrapper">
<pre id="codeSnippet" style="background-color: #e8d8b7; color: black; direction: ltr; font-family: "courier new" , "courier" , monospace; font-size: 10pt; line-height: 12pt; margin: 0em; overflow: visible; padding: 0px; text-align: left; width: 100%;"><span style="color: blue;">this</span>.dsCust.Relations.Add(<span style="color: #006080;">"CustomerOrdersRelation"</span>,
<span style="color: blue;">this</span>.dsCust.Tables[<span style="color: #006080;">"Customer"</span>].Columns[<span style="color: #006080;">"CustID"</span>],
<span style="color: blue;">this</span>.dsCust.Tables[<span style="color: #006080;">"Orders"</span>].Columns[<span style="color: #006080;">"CustID"</span>]);</pre>
<br />
I usually recommend that DataBinding be set up in the Form's Load event handler. You'd have code like this (this would be after you've already set up a DataRelation): </div>
<br />
<div id="codeSnippetWrapper">
<div id="codeSnippetWrapper">
<pre id="codeSnippet" style="background-color: #e8d8b7; color: black; direction: ltr; font-family: "courier new" , "courier" , monospace; font-size: 10pt; line-height: 12pt; margin: 0em; overflow: visible; padding: 0px; text-align: left; width: 100%;"><span style="color: blue;">this</span>.bsParent = <span style="color: blue;">new</span> BindingSource();
<span style="color: blue;">this</span>.bsChild = <span style="color: blue;">new</span> BindingSource();
<span style="color: blue;">this</span>.bsParent.DataSource = <span style="color: blue;">this</span>.dsCust;
<span style="color: blue;">this</span>.bsParent.DataMember = <span style="color: #006080;">"Customer"</span>;
<span style="color: blue;">this</span>.bsChild.DataSource = <span style="color: blue;">this</span>.bsParent;
<span style="color: blue;">this</span>.bsChild.DataMember = <span style="color: #006080;">"CustomerOrdersRelation"</span>;</pre>
<br />
There are two key things to note here: </div>
</div>
<ol>
<li>The DataSource for the bsChild is the <strong>bsParent</strong>.</li>
<li>The DataMember for the bsChild is the <strong>Relationship</strong>, rather than a DataTable. This is what makes the whole thing work.</li>
</ol>
Now, we can use the BindingSources to DataBind parent/child DataGridViews and/or TextBoxes or other Controls, depending on the functionality you need:<br />
<br />
<div id="codeSnippetWrapper">
<pre id="codeSnippet" style="background-color: #e8d8b7; color: black; direction: ltr; font-family: "courier new" , "courier" , monospace; font-size: 10pt; line-height: 12pt; margin: 0em; overflow: visible; padding: 0px; text-align: left; width: 100%;"><span style="color: blue;">this</span>.oGridCustomer.DataSource = <span style="color: blue;">this</span>.bsParent;
<span style="color: blue;">this</span>.oGridOrders.DataSource = <span style="color: blue;">this</span>.bsChild;
<span style="color: blue;">this</span>.txtOrderDescription.DataBindings.Add(<span style="color: #006080;">"Text"</span>, <span style="color: blue;">this</span>.bsChild, <span style="color: #006080;">"description"</span>);</pre>
<br />
There <strong>*is*</strong> one little "gotcha" that you sometimes need to watch out for. That's the subject of bsChild.EndEdit(). The potential problem and solution is described in my blog post: <a href="https://geek-goddess-bonnie.blogspot.com/2010/03/uncommitted-child-table-changes.html" target="_blank">https://geek-goddess-bonnie.blogspot.com/2010/03/uncommitted-child-table-changes.html</a></div>
<br />
However, if you <strong>*can't*</strong> (or don't want to) use a DataRelation, then you <strong>do this with a Filter on the child BindingSource</strong>. It's only slightly different, because we have to utilize the bsParent.PositionChanged event handler to reset the Filter.<br />
<br />
The bsParent is set up the same way as it was above. It's the bsChild that will be different:<br />
<br />
<div id="codeSnippetWrapper">
<pre id="codeSnippet" style="background-color: #e8d8b7; color: black; direction: ltr; font-family: "courier new" , "courier" , monospace; font-size: 10pt; line-height: 12pt; margin: 0em; overflow: visible; padding: 0px; text-align: left; width: 100%;">bsChild.DataSource = <span style="color: blue;">this</span>.dsCust.Tables[<span style="color: #006080;">"Orders"</span>];
bsChild.Filter = <span style="color: blue;">string</span>.Format(<span style="color: #006080;">"CustID = '{0}'"</span>, <span style="color: blue;">this</span>.dsCust.Tables[<span style="color: #006080;">"Customer"</span>].Rows[bsParent.Position][<span style="color: #006080;">"CustID"</span>]);
bsParent.PositionChanged += bsParent_PositionChanged;</pre>
<br />
And, for the Parent PositionChanged event handler, we just reset the Child Filter: </div>
<br />
<div>
<div id="codeSnippetWrapper">
<pre id="codeSnippet" style="background-color: #e8d8b7; color: black; direction: ltr; font-family: "courier new" , "courier" , monospace; font-size: 10pt; line-height: 12pt; margin: 0em; overflow: visible; padding: 0px; text-align: left; width: 100%;"><span style="color: blue;">private</span> <span style="color: blue;">void</span> bsParent_PositionChanged(<span style="color: blue;">object</span> sender, EventArgs e)
{
bsChild.Filter = <span style="color: blue;">string</span>.Format(<span style="color: #006080;">"CustID = '{0}'"</span>, <span style="color: blue;">this</span>.dsCust.Tables[<span style="color: #006080;">"Customer"</span>].Rows[bsParent.Position][<span style="color: #006080;">"CustID"</span>]);
}</pre>
<br />
And, obviously, since the two grids and the TextBox are set up using the bsParent and bsChild, nothing needs to change there.</div>
</div>
<br />
In either scenario, as the user moves through the rows in the Customer grid, the corresponding child rows will be all that's displayed in the Order grid and the corresponding Order description in the textbox. <br />
<br />
<div>
<br /></div>
Bonniehttp://www.blogger.com/profile/11241425687786973525noreply@blogger.com6