|
Don't try and do it via the datagrid, do it to the collection you used as the datasource. How that works depends on the collection type.
Never underestimate the power of human stupidity
RAH
|
|
|
|
|
Back in Feb. 2016 I posted a How create a parallel task to call the same method -- Solution 2[^]
I'm not fishing for Reputation Points, but since I'm relatively new with Rx, I'm wondering if there's a better way to do this using Rx.
Since the question didn't originally reference/tag Rx, it might not have attracted the notice of the Rx folks. Nor is there any other way to tag the solution with Rx so you other Rx users would see (and comment on) it.
If this is inappropriate, please let me know and I'll remove it.
"Fairy tales do not tell children the dragons exist. Children already know that dragons exist. Fairy tales tell children the dragons can be killed."
- G.K. Chesterton
|
|
|
|
|
|
Hmm, your question seems more and more important the deeper I look. The previous post is ok, it works and shows some nice things. But I read this post here:
StartNew is Dangerous[^]
And realized that I could probably do it a bit simpler with this call instead exchanging the default values at demand of course:
Observable.Range(0, 10).
Select(e => (Task.Factory.StartNew(() => DoWork(e),
CancellationToken.None,
TaskCreationOptions.DenyChildAttach,
TaskScheduler.Default)))
.ObserveOnDispatcher()
.Subscribe(evt =>
{
});
But supposed I only wanted 5 parallel processes to run at the same time? How could I do that? I also seem to get the values once everyone is finished, and I'm currently not entirely sure what that is the case either.
I could also use the Observable.Start(()=>DoWork(e)) but the result in the subscriber seemed unusable to me, perhaps I mistook something here?
|
|
|
|
|
Your comments don't seem to be related to my code. How did you intend for them to apply?
Why did you refer to StartNew ? I didn't use that. I used Task.Run() .
In the original question the point was to cancel any tasks once any one had returned true.
My code accomplishes that.
I didn't use the .ToObservable() (that you referenced in your previous comment) on the Task s since, in the current Rx, Task and Task<T> can be used where IObservable<Unit> and IObservable<T> can.
I don't know about how you could limit to 5 parallel Task s as you asked...
"Fairy tales do not tell children the dragons exist. Children already know that dragons exist. Fairy tales tell children the dragons can be killed."
- G.K. Chesterton
|
|
|
|
|
I misread the question a little, I thought he also wanted to stop the calculation with a UI event also. I saw this question mainly as a cross thread communication issue.
The reason I liked the .ToObservable() is that I could easily move the thread initialization off the UI by calling .SubscribeOn(Scheduler.Default) , I always like to do that as soon as possible. But I guess it's not going to make a big deal of difference.
As for my question, I realized that restricting the number of new threads is not necessary, as the Run.Task or TaskFactory.StartNew manages that for me (They could work in the same way with proper initialization). I though the methods always started a new thread, but that is not the case.
Guess I need to drink a little more Sorry for my confusion here
|
|
|
|
|
Since my solution used a CancellationToken the UI should be able to use that to stop all of the calculations that way also. The CancellationTokenSource would need to be "exposed", or a method to .Cancel() the token source would need to be provided.
"Fairy tales do not tell children the dragons exist. Children already know that dragons exist. Fairy tales tell children the dragons can be killed."
- G.K. Chesterton
|
|
|
|
|
I just saw your Rx post on updating the UI, etc. and realized that you may have been using this thread to "prompt" me to look at that one...
"Fairy tales do not tell children the dragons exist. Children already know that dragons exist. Fairy tales tell children the dragons can be killed."
- G.K. Chesterton
|
|
|
|
|
I have a for loop that outputs a sequence of numbers.It checks to see if each number from 100 to 10000 is odd or even. If it is odd, it appends the number to a stringbuilder object.
when the loop is done checking for odd numbers, it converts the stringbuilder object to a string object and prints it out.
Below is a code snippet similar to my actual code
class Program
{
static void Main(string[] args)
{
AllNumbers number = new AllNumbers();
number.ShowOddNumbers();
Console.ReadLine();
}
}
publuic class AllNumbers()
{
public void ShowOddNumbers()
{
StringBuilder OddNumbers = new StringBuilder();
StringBuilder comma = new StringBuilder(", ");
for (int i = 100; i <= 10000; i++)
{
if (IsOddNumber(i))
{
OddNumbers.Append(i).Append(comma);
}
}
Console.Write(Odd.ToString().TrimEnd(' ').TrimEnd(','));
}
}
The problem I am having is that I cannot make the WriteLine() function printout only X number of odd numbers per line. How do I make each line have say 10 numbers max separated by commas? Thanks in advance.
modified 18-Mar-16 18:42pm.
|
|
|
|
|
Do you want to share the code that you are using to give us a chance to assist?
|
|
|
|
|
Hi, thanks for replying. I have rephrased my question and have added sample code to make my question clear.
|
|
|
|
|
You can try appending a carriage return (13) and line feed (10) to the string builder after every 10th result.
The difficult we do right away...
...the impossible takes slightly longer.
|
|
|
|
|
You didn't ask for this but maybe you'll find it interesting - I got a bit carried away..
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Text;
namespace OddNumbers
{
class Program
{
static void Main(string[] args)
{
WriteNumbers(EvenNumbers(100, 1000), 10);
Console.ReadKey();
WriteNumbers(OddNumbers(100, 1000), 10);
Console.ReadKey();
}
static void WriteNumbers(IEnumerable<int> numbers, int numbersPerLine)
{
Debug.Assert(numbers != null);
Debug.Assert(numbersPerLine >= 1);
StringBuilder line = new StringBuilder();
int count = 0;
Action writeLine = () =>
{
Console.WriteLine(line.ToString());
line.Clear();
count = 0;
};
foreach (int number in numbers)
{
line.Append(number).Append(", ");
count++;
if (count == numbersPerLine)
writeLine();
}
if (count > 0)
writeLine();
}
static IEnumerable<int> EvenNumbers(int start, int end)
{
Debug.Assert(start <= end);
if (IsOdd(start))
start++;
for (int i = start; i <= end; i += 2)
yield return i;
}
static IEnumerable<int> OddNumbers(int start, int end)
{
Debug.Assert(start <= end);
if (!IsOdd(start))
start++;
for (int i = start; i <= end; i += 2)
yield return i;
}
static bool IsOdd(int number)
{
return (number & 1) == 1;
}
}
}
If the brain were so simple we could understand it, we would be so simple we couldn't. — Lyall Watson
|
|
|
|
|
A bit?
What do you get when you cross a joke with a rhetorical question?
The metaphorical solid rear-end expulsions have impacted the metaphorical motorized bladed rotating air movement mechanism.
Do questions with multiple question marks annoy you???
|
|
|
|
|
|
LOL!
What do you get when you cross a joke with a rhetorical question?
The metaphorical solid rear-end expulsions have impacted the metaphorical motorized bladed rotating air movement mechanism.
Do questions with multiple question marks annoy you???
|
|
|
|
|
MadDashCoder wrote: for (int i = 100; i <= 10000; i++)
{
if (IsOddNumber(i))
{
OddNumbers.Append(i).Append(comma);
}
}
Why? Iterating just the odd numbers isn't exactly difficult:
for (int i = 101; i < 10000; i += 2)
{
OddNumbers.Append(i).Append(comma);
}
"These people looked deep within my soul and assigned me a number based on the order in which I joined."
- Homer
|
|
|
|
|
I've got an oddball issue I'm troubleshooting. I have a heavy duty data exchange service (windows service hosted in a data center) currently routing data requests from about 120 clients. Any individual client has about 5-15 other clients able to query them. At any given time around 100 or so will be connected, each with a single socket to the exchange service. Most client connection come in from the internet (a few are also hosted at the same data center).
The behaviour I'm observing is that frequently the service will carry out a formal disconnect (exchange terminate messages, and then close the socket) from the client after being connected for less than 10 seconds. Tracking it down I've identified the problem to the EndRead method below. I have the socket managed by custom implementation of Stream.
public override IAsyncResult BeginRead(byte[] buffer, int offset, int count, AsyncCallback callback, object state) {
if (null != _socket && _socket.Connected)
return _socket.BeginReceive(buffer, offset, count, SocketFlags.None, callback, state);
else
return null;
}
public override int EndRead(IAsyncResult asyncResult) {
int result = -1;
if (null != _socket && _socket.Connected) {
try { result = _socket.EndReceive(asyncResult); } catch (ObjectDisposedException) { }
}
return result;
}
One of two things are happening (my logging didn't track which). Either _socket.Connected is false, or _socket.EndReceive is throwing ObjectDisposedException, since -1 is returned.
Wireshark captures from both the server and client sides show no FIN or RST was ever sent by the client prior to the formal disconnect, instead the disconnect is incidentally caused by Dispose logic once the read fails. Since the connection is in fact still active the terminate message is sent and responded to. If any other exception was thrown it would have been captured and logged. The read that fails is the first of 3 reads for a complete message (being Header, payload length and payload), nor does the Wireshark trace show any message attempted immediately before the disconnect. The last client message was appropriately responded to by the service.
Any one have any hints on where to go hunting for answers?
Addendum: This is TCP.
modified 17-Mar-16 15:54pm.
|
|
|
|
|
Some things to look into.
1. Is there a read timeout on (possibly some) of the sockets?
2. Is the socket (_socket) used in EndRead guaranteed to be the same as the one that started the read. MSDN recommends embedding the socket in the parameter passed in to EndRead.
3. Check whether the thread that issues the read is still running - (From MSDN) All I/O initiated by a given thread is canceled when that thread exits. A pending asynchronous operation can fail if the thread exits before the operation completes.
If that fails the .NET framework can do network tracing on these commands.
NOTE: The EndRecieve method is not guaranteed to return all of the data requested. You may need to request more data.
Best of luck.
|
|
|
|
|
Eventually (via Wireshark) identified a rogue client side process connecting that used the same client ID ... which caused my service to disconnect any connections with that ID ... d'oh!
Still not sure how that's happening from the client, but at least I'm not going mad!
|
|
|
|
|
Hi/Hello!
I am working on Final year project.I amm developing a website database editor.I have created many tables in the database e.g user ,table field ,database etc.I want when i click on button create table then this dialog box open,like this kind of dialog box ,here is image link
http:
Can any one help me plz,I am beginner I don't know how to generate this kind of window.Thanks
Please provide me links or other resources e.g video etc.Thanks CODE PROJECT
|
|
|
|
|
Make your mind up:
Hameed Khan wrote: I am working on Final year project
Hameed Khan wrote: I am beginner
The two do not go well together!
All that is, is a simple form with controls dropped on it!.
To create and display it, right click your Project in Visual Studio, and select "Add"..."Windows Form"
Give it a sensible name (frmDetail perhaps) and click the "Add" button.
Drag controls from the tool box onto your form.
In the Code View, add properties to fill the textboxes.
Now go back to your main form and handle a button click event.
Add the following code:
frmDetail detail = new frmDetail();
if (frmDetail.ShowDialog == DialogResult.OK)
{
}
But if you don't know how to do that...I don't hold out a lot of hope for your final year project!
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
|
|
|
|
|
OriginalGriff wrote: select "Add"..."Windows Form"
That won't work so well in an ASP.NET project.
"These people looked deep within my soul and assigned me a number based on the order in which I joined."
- Homer
|
|
|
|
|
Picky, picky, picky!
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
|
|
|
|
|
Where are you stuck?
There are only 10 types of people in the world, those who understand binary and those who don't.
|
|
|
|