|
As always, the answer is "it depends".
It will depend on the current TaskScheduler[^], which is the class that actually schedules the work.
The default TaskScheduler uses the thread pool, so it will also depend on what other things are happening in your AppDomain at the time.
But in general, you can't depend on the tasks executing in a defined order. If your code requires a specific order, then that's a bug. You need to rewrite your code to explicitly execute the tasks in the required order, or to use synchronization primitives to prevent one task from executing before a task it depends on has finished.
One simple solution would be:
await Task.WhenAll(
FirstTask(),
SecondTask(),
ThirdTask(),
);
await FourthTask();
await Task.WhenAll(
FifthTask(),
SixthTask(),
);
"These people looked deep within my soul and assigned me a number based on the order in which I joined."
- Homer
|
|
|
|
|
I figured that was the case.
My problem is that I have 2 classes, one long running and on short running. So I'm passing a ManualResetEvent into both so that the shorter one pauses until the longer is done.
I just wanted to be sure the Longer one starts first. Probably not a big deal but I was hoping
If it's not broken, fix it until it is.
Everything makes sense in someone's mind.
Ya can't fix stupid.
|
|
|
|
|
A better solution is a Parallel.ForEach, followed by a WaitAll - there is no need to pause the faster task. Just wait for both tasks having finished.
Oh sanctissimi Wilhelmus, Theodorus, et Fredericus!
|
|
|
|
|
Hello all
i know how can i unzip file from hardisk
but how can i Unzip file from resources directly without copy it to outside of resources first
|
|
|
|
|
Please don't repost if your question does not appear immediately: all of these went to moderation and required a human being to review them for publication. In order to prevent you being kicked off as a spammer, all four had to be accepted, and then I have to clean up the spares. Have a little patience, please!
I'll delete the other three versions.
Sent from my Amstrad PC 1640
Never throw anything away, Griff
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
AntiTwitter: @DalekDave is now a follower!
|
|
|
|
|
Most compression libraries treat the file to be decompressed as a stream of bytes. If you have the source code for the library, you can modify it as follows:
- Load the resource (instead of opening the file)
- Convert all reads from the file to memcpy() operations
- Discard the resource (instead of closing the file)
In a well-written library, you shouldn't have too many places that require modification.
Freedom is the freedom to say that two plus two make four. If that is granted, all else follows.
-- 6079 Smith W.
|
|
|
|
|
How can i open the file directly from resources i havnt no idea
|
|
|
|
|
|
I dont know i created just one but i was have an erreo on confirmision . I dont know where the problem
|
|
|
|
|
yes iam now using this code
string resource = "Installer.Resources.myFile.zip";
System.Reflection.Assembly a = System.Reflection.Assembly.GetExecutingAssembly();
Stream resFilestream = a.GetManifestResourceStream(resource);
but i can't use the
ZipArchive archive = ZipFile.OpenRead(resFilestream);
becouse the OpenRead Function need the path of physical path on hard disk
what can i do to can full archive with myFile.zip to can i read it and extract any file contains in this archive
|
|
|
|
|
|
JCompier wrote: Unzip file from resources directly without copy it to outside of resources first
Make sure of course both of the following are true
- You realize that it would still be in memory and memory can be swapped to the hard drive. I only bring this up because I have seen requests before involving military work where the content could not be stored under any circumstances.
- You determine that the source (zip file) will never be 'big'. So a 1k zip file is ok but if it is possible and you do not specifically code a check for this, that the file is 100 meg or 1 gig, then unzipping in memory is going to be a problem.
|
|
|
|
|
jschell wrote: So a 1k zip file is ok but if it is possible and you do not specifically code a check for this, that the file is 100 meg or 1 gig, then unzipping in memory is going to be a problem.
If the file could be modified by a malicious actor, even a small zip file could be a problem:
One example of a zip bomb is the file 42.zip, which is a zip file consisting of 42 kilobytes of compressed data, containing five layers of nested zip files in sets of 16, each bottom layer archive containing a 4.3-gigabyte file for a total of 4.5 petabytes of uncompressed data.
"These people looked deep within my soul and assigned me a number based on the order in which I joined."
- Homer
|
|
|
|
|
Im currently developing a token based web api.
In my startup.cs, I have the following code:
OAuthAuthorizationServerOptions OAuthServerOptions = new OAuthAuthorizationServerOptions()
{
AllowInsecureHttp = true,
TokenEndpointPath = new PathString("/token"),
AccessTokenExpireTimeSpan = TimeSpan.FromMinutes(30),
Provider = new SimpleAuthorizationServerProvider(),
RefreshTokenProvider = new SimpleRefreshTokenProvider()
};
Here is some code from my SimpleAuthorizationServerProvider:
public class SimpleAuthorizationServerProvider : OAuthAuthorizationServerProvider
{
private readonly IAuthService _authService;
public SimpleAuthorizationServerProvider(IAuthService authService)
{
_authService = authService;
}
}
The problem I have is that I get the following error in my startup.cs:
There is no argument givet that corresponds to the required formal parameter 'authService' of SimpleAuthenticationProver.SimpleAuthenticationprover(IAuthService)
I also get the same for SimpleRefreshTokenProvider, because Im using my authservice there too.
So how can I fix this In a nice way? I want to use my authservice inside my providers.
|
|
|
|
|
Member 12045692 wrote: Provider = new SimpleAuthorizationServerProvider(), You haven't supplied an argument here. You're trying to create an instance without supplying the correct instantiation signature.
This space for rent
|
|
|
|
|
Yes, I know. But what kind of argument should I provide here?
|
|
|
|
|
You will need to pass an object of a class that implement IAuthService interface.
"It is easy to decipher extraterrestrial signals after deciphering Javascript and VB6 themselves.", ISanti[ ^]
|
|
|
|
|
I can't just pass an object that implements IAuthService, because IAuthService implements IAuthRepository. So either to create an object that implements IAuthService, I must first create an object that implements IAuthRepository, and pass that object as an parameter into IAuthService.
Either to have access to IAuthRepository from my startup.cs, my Ui-layer must have an reference to my third layer(DataAccess-layer), and that's not the way to do It.
It seems that I have to sovle this in an another way..
|
|
|
|
|
You simply don't have a choice here. You either pass an object that implements IAuthService either directly or through inheriting from another class that implements it, or you don't use this code. End of story.
|
|
|
|
|
Why do we seem to be getting so many queries about complex subjects from people that clearly don't have a clue about the basics recently?
Sent from my Amstrad PC 1640
Never throw anything away, Griff
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
AntiTwitter: @DalekDave is now a follower!
|
|
|
|
|
And how can that help me?
|
|
|
|
|
Because if you knew the basics, you would know what the error message meant, rather than have to have Pete explain it...
Sent from my Amstrad PC 1640
Never throw anything away, Griff
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
AntiTwitter: @DalekDave is now a follower!
|
|
|
|
|
I knew what It meant. Read my reply about the difficulties to pass an object that implements IAuthService.
|
|
|
|
|
It sounds like you're trying to use Dependency Injection with your provider instances. It's not simple, but there are a few suggestions in this StackOverflow thread[^].
For example:
public class Startup
{
public void Configuration(IAppBuilder app)
{
var container = SimpleInjectorConfig.Register();
GlobalConfiguration.Configure(WebApiConfig.Register);
Func<IAuthService> authServiceFactory = () => container.GetInstance<IAuthService>();
var OAuthServerOptions = new OAuthAuthorizationServerOptions
{
AllowInsecureHttp = true,
TokenEndpointPath = new PathString("/token"),
AccessTokenExpireTimeSpan = TimeSpan.FromDays(1),
Provider = new SimpleAuthorizationServerProvider(authServiceFactory),
RefreshTokenProvider = new SimpleRefreshTokenProvider(authServiceFactory),
};
app.UseOAuthAuthorizationServer(OAuthServerOptions);
app.UseOAuthBearerAuthentication(new OAuthBearerAuthenticationOptions());
}
}
Your provider classes will need to be changed to take a Func<IAuthService> delegate instead of an IAuthService instance. Whenever they need an IAuthService instance, they call the factory delegate.
public class SimpleAuthorizationServerProvider : OAuthAuthorizationServerProvider
{
private readonly Func<IAuthService> _authServiceFactory;
public SimpleAuthorizationServerProvider(Func<IAuthService> authServiceFactory)
{
_authServiceFactory = authServiceFactory;
}
...
public override Task GrantAuthorizationCode(OAuthGrantAuthorizationCodeContext context)
{
IAuthService authService = _authServiceFactory();
...
}
"These people looked deep within my soul and assigned me a number based on the order in which I joined."
- Homer
|
|
|
|
|
Hi mates
i hope its been awesome
i got a question...?
i have to do some project in C#
who can help me?
that is ...
a management clinic which is include
1) adult or 2) child
and it has a person as a GP
if GP diagnosis Cold , then give a prescription with price
else referral to Specialist (with random function)
if specialist diagnosis the patient need to surgery , print coast
else print all prescription with price
I'll appreciate in advance to help me guys
|
|
|
|