Skip to main content
Microsoft
Developer Support
Developer Support
  • Home
  • DevBlogs
    • Visual Studio
    • Visual Studio Code
    • Visual Studio for Mac
    • DevOps
    • Developer support
    • CSE Developer
    • Engineering@Microsoft
    • Azure SDK
    • IoT
    • Command Line
    • Perf and Diagnostics
    • Dr. International
    • Notification Hubs
    • Math in Office
    • DirectX
    • PIX
    • SurfaceDuo
    • Startups
    • Sustainable Engineering
    • Windows AI Platform
    • C++
    • C#
    • F#
    • Visual Basic
    • TypeScript
    • PowerShell Community
    • PowerShell Team
    • Python
    • Q#
    • JavaScript
    • Java
    • Java Blog in Chinese
    • .NET
    • .NET MAUI
    • Blazor
    • ASP.NET
    • NuGet
    • Xamarin
    • #ifdef Windows
    • Apps for Windows
    • Azure Depth Platform
    • Azure Government
    • Bing Dev Center
    • Microsoft Edge Dev
    • Microsoft Azure
    • Microsoft 365 Developer
    • Old New Thing
    • Windows MIDI and Music dev
    • Windows Search Platform
    • Azure Cosmos DB
    • Azure Data Studio
    • Azure SQL Database
    • OData
    • Revolutions R
    • SQL Server Data Tools

    Andrew Arnott

    Principal Software Engineer, Visual Studio Platform

    Principal Software Engineer and OSS contributor. Visual Studio Platform.

    Post by this author

    Limiting concurrency for faster and more responsive apps
    Limiting concurrency for faster and more responsive apps
    May 11th, 2017
    When you have a set of highly parallelizeable work, executing it concurrently can be easy: Of course you'd probably want to track the work at least so you know when it's done: Calling Task.Run schedules the work to run on the .NET ThreadPool which is highly tuned and can likely get the work done as fast as you have CPUs to do the...

    Comments are closed.0andarno
    TaskSchedulers and semaphores
    TaskSchedulers and semaphores
    February 6th, 2016
    When you write multi-threaded code, it's important to be aware of whether the code in other libraries you call into is also thread-safe. By my observation, most code written is not thread-safe. So if you're writing thread-safe code, kudos to you. But as you'll sometimes need to call non-thread-safe code from your multi-threaded code, this post...

    Comments are closed.0andarno
    When TPL Task continuations are inlined
    When TPL Task continuations are inlined
    December 31st, 2015
    Task and Task in .NET 4.0 are absolutely awesome types and they provide the basis for async support that came in .NET 4.5. One somewhat unexpected behavior they have that can occasionally cause bugs in your code is that when a Task completes, it can execute continuations inline. In this post, I explain this and what you can do to avoid it when...

    Comments are closed.0andarno
    Install Android SDKs using Powershell
    Install Android SDKs using Powershell
    October 12th, 2015
    The Android SDK Manager requires a GUI and tedious searching for the SDKs that you want to install. There is a command line android.bat script that lets you install and uninstall these without the GUI but it's based on an ordinal index for each SDK so you have to run the script once, note the index(es) of the SDKs you want to install, then ...

    Comments are closed.0andarnoAndroidPowerShell
    ImmutableObjectGraph has some big updates now, and more coming soon
    ImmutableObjectGraph has some big updates now, and more coming soon
    November 19th, 2014
    I was able to work out a model for continued open source development of ImmutableObjectGraph -- at least in a limited way. This means that the 16 month silence on the public repo is over, and I was able to push a bunch of the commits I had been keeping internal to the public. For those of you not already familiar with the library/tool, you ...

    Comments are closed.0.NETandarnoImmutability
    So many exceptions… but only one can throw
    So many exceptions… but only one can throw
    May 13th, 2014
    When a method may throw for more than one reason, the thoughtful programmer might ask “which exception should be thrown?”Consider a method which performs argument validation, is cancelable, and also might throw based on the state of the object. What order should these validations occur so that the best exception is thrown? Here is ...

    Comments are closed.0.NETandarnoasync
    Asynchronous and multithreaded programming within VS using the JoinableTaskFactory
    Asynchronous and multithreaded programming within VS using the JoinableTaskFactory
    May 7th, 2014
    Everyone appreciates a fast and responsive UI, and Visual Studio is no exception. Extensions that run in Visual Studio play a significant role in how responsive the IDE will be for its users. Visual Studio has been evolving over the past few cycles to not only improve performance, but also responsiveness during operations that may take a while...

    Comments are closed.0andarno
    Recommended patterns for CancellationToken
    Recommended patterns for CancellationToken
    March 19th, 2014
    Whether you're doing async work or not, accepting a CancellationToken as a parameter to your method is a great pattern for allowing your caller to express lost interest in the result. Supporting cancelable operations comes with a little bit of extra responsibility on your part. Optional CancellationToken ...

    7andarno
    Immutable Object Graph updates
    Immutable Object Graph updates
    May 7th, 2013
    In my last post, I introduced a T4 template that constructs efficient and quite capable immutable objects based on the simplest mutable type definition. I also mentioned that the published sample is (necessarily, ala T4 style) open source and hosted online. Two outsiders have already submitted pull requests that have been accepted. Some ...

    Comments are closed.0.NETandarnoImmutability
    Simple immutable objects
    Simple immutable objects
    January 8th, 2013
    We’re all familiar with immutable collections now. But immutability is only as immutable as it is deep. And an immutable collection of mutable objects may not provide the depth you’re looking for. So how can one create an immutable object? Suppose you would define the mutable version like this: An immutable version might be ...

    Comments are closed.0.NETandarnoImmutability
    • 1
    • 2
    • 3
    • …
    • 6
    Relevant Links

    About Us

    Microsoft Unified Support

    Contact Us

    Case Studies

    Join our Team


    Content issues or broken links?  Please leave a comment or send us a note!

    Top Bloggers

    Developer Support
    App Dev Customer Success Account Manager

    Archive
  • April 2022
  • February 2022
  • January 2022
  • November 2021
  • August 2021
  • July 2021
  • June 2021
  • April 2021
  • March 2021
  • February 2021
  • January 2021
  • December 2020
  • November 2020
  • October 2020
  • September 2020
  • August 2020
  • July 2020
  • June 2020
  • May 2020
  • April 2020
  • March 2020
  • February 2020
  • January 2020
  • December 2019
  • November 2019
  • October 2019
  • September 2019
  • August 2019
  • July 2019
  • June 2019
  • May 2019
  • April 2019
  • March 2019
  • February 2019
  • January 2019
  • December 2018
  • November 2018
  • October 2018
  • September 2018
  • August 2018
  • July 2018
  • June 2018
  • May 2018
  • April 2018
  • March 2018
  • February 2018
  • January 2018
  • December 2017
  • November 2017
  • October 2017
  • September 2017
  • August 2017
  • July 2017
  • June 2017
  • May 2017
  • April 2017
  • March 2017
  • February 2017
  • January 2017
  • December 2016
  • November 2016
  • October 2016
  • September 2016
  • August 2016
  • July 2016
  • June 2016
  • May 2016
  • April 2016
  • March 2016
  • February 2016
  • January 2016
  • December 2015
  • November 2015
  • October 2015
  • September 2015
  • August 2015
  • July 2015
  • June 2015
  • May 2015
  • April 2015
  • March 2015
  • February 2015
  • January 2015
  • December 2014
  • November 2014
  • October 2014
  • September 2014
  • May 2014
  • March 2014
  • May 2013
  • January 2013
  • December 2012
  • June 2012
  • August 2011
  • February 2010
  • October 2008
  • September 2008
  • August 2008
  • April 2008
  • February 2008
  • January 2008
  • December 2007
  • November 2007
  • October 2007
  • September 2007
  • August 2007
  • July 2007
  • June 2007
  • Stay informed

    Login
    Code Block
    What's new
    • Surface Pro 8
    • Surface Laptop Studio
    • Surface Pro X
    • Surface Go 3
    • Surface Duo 2
    • Surface Pro 7+
    • Windows 11 apps
    • HoloLens 2
    Microsoft Store
    • Account profile
    • Download Center
    • Microsoft Store support
    • Returns
    • Order tracking
    • Virtual workshops and training
    • Microsoft Store Promise
    • Flexible Payments
    Education
    • Microsoft in education
    • Devices for education
    • Microsoft Teams for Education
    • Microsoft 365 Education
    • Education consultation appointment
    • Educator training and development
    • Deals for students and parents
    • Azure for students
    Business
    • Microsoft Cloud
    • Microsoft Security
    • Azure
    • Dynamics 365
    • Microsoft 365
    • Microsoft Advertising
    • Microsoft Industry
    • Microsoft Teams
    Developer & IT
    • Developer Center
    • Documentation
    • Microsoft Learn
    • Microsoft Tech Community
    • Azure Marketplace
    • AppSource
    • Microsoft Power Platform
    • Visual Studio
    Company
    • Careers
    • About Microsoft
    • Company news
    • Privacy at Microsoft
    • Investors
    • Diversity and inclusion
    • Accessibility
    • Security
    English (United States)
    • Sitemap
    • Contact Microsoft
    • Privacy
    • Manage cookies
    • Terms of use
    • Trademarks
    • Safety & eco
    • About our ads
    • © Microsoft 2022