Search Results

Search found 17081 results on 684 pages for 'body background'.

Page 165/684 | < Previous Page | 161 162 163 164 165 166 167 168 169 170 171 172  | Next Page >

  • How Can I Not Show the Green Download Progress Display for Google Chrome in the Windows Taskbar?

    - by theMaxx
    I use Windows 7 and when downloading with Google Chrome the icon in the taskbar has a partially green background that indicates the download progress. Is there a way to not show this green status indicator in the Windows taskbar? I find it distracting when I am working. It seems there is no option to disable it. I do not want to hide the icon entirely but rather just not show the green background. Is this possible? I have searched for an option or setting to change this but there seems to be surprisingly little information about this on the internet. I imagine that others would also appreciate it if there is some solution for this. Thanks.

    Read the article

  • Can I pass the LHS of a cfengine3 processes: line to the RHS?

    - by joeforker
    I'm using cfengine to start the foobar process. Apparently the LHS is discarded when I use process_select? Can I simply pass the LHS to a function, rather than having to put the command match pattern in a body argument? bundle agent foobar { processes: "foobar" # documented way would be to use .* here process_select => command("foobar"), restart_class => start_foobar; commands: start_foobar:: "/usr/bin/foobar"; } body process_select command(c) { command => "$(c)"; process_result => "command"; }

    Read the article

  • Starting multiple applications in Ubuntu Unity

    - by Black
    I would like to start multiple GUI applications with a single script or command in Ubuntu 12. By now, I have a shell script that starts an application in the foreground and waits for the termination of the application afterwards starts several applications (like browser, mailer, IRC client) in the background The script is working, however all the applications are getting the same icon and are treated like different windows of one application, i.e. the script. Is there a way to start applications from a script, that makes Unity display the icons of the applications, e.g. the Thunderbird icon, instead of a single default icon for the script? The script looks like this: ! /bin/bash wait for termination... /usr/bin/libreoffice path/to/document in background /usr/bin/thunderbird & /usr/bin/pidgin &

    Read the article

  • HTTP Caching Server that supports POST

    - by Jeroen
    I am hosting a REST service which is sending appropriate cache-control headers. I use Varnish as a caching server in front of my webserver. However, a limitation of varnish is that it doesn't support caching HTTP POST and HTTP PUT. Is there any alternate caching server that will be able to cache these requests? I understand that caching POST is a bit tricky because you cannot just cache based on the url as a key like for GET; it needs to actually inspect the request body. In case of multipart/form-data requests, there should probably be a limit on the size of the request body for it to be cached (so that big file uploads, etc won't be cached). Nevertheless I really want to be able to cache short HTTP POST, or at least the application/x-www-form-urlencoded ones.

    Read the article

  • "Turn Off The Lights" on any website?

    - by gojira
    On Youtube, there is this nice button (easy to overlook - top left of the video) which lets one "turn off the lights": the site background changes from white to black, the text color changes from black to grey. There is an unrelated plug-in for Firefox called "Turned Off The Lights", which has a very similar functionality. This makes websites so much easier to read. However, both technologies only work on YouTube. Is there anything to achive the same effect for all websites? Preferably with Firefox? I.e.: I want to have very dark background and light text color on all websites viewed with Firefox, how can I do that?

    Read the article

  • PHP MAMP email stopped sending

    - by Kyle Parisi
    I'm working on a simple registration email. I'm using MAMP (free) with PHP. I was getting emails from my code before. Now I get nothing. Here is a test code that doesn't send the email either. <?php $to = "[email protected]"; $subject = "Hi!"; $body = "Hi,\n\nHow are you?"; if (mail($to, $subject, $body)) { echo("<p>Message successfully sent!</p>"); } else { echo("<p>Message delivery failed...</p>"); } ?> What might have changed? I read that perhaps my ISP blocked sending emails? How do I find out?

    Read the article

  • Highlighting subroutines in Notepad++

    - by predatflaps
    I would like to highlight the contents of IF statements in a slightly different colour from the background, so that I can see them more easily. Is it possible in Notepad++? it would be amazing to highlight all the nested subroutines in a function in slightly different light/dark colours depending on the scheme so that you can straightaway see the commands at a glance without spying out the curly brackets. not psychedelic colours, just slightly visible background colour difference. wouldn't it be great? Function Foo(){ highlight one color if(){highlight color2 for(){highlight color3 if (){hilghlight color4 } } } } }

    Read the article

  • Apple Remote Desktop and Screen Sharing

    - by jfm429
    We have a Mac OS 10.8.2 server that we want to be able to administer with Apple Remote Desktop. At the same time, we want normal users to be able to access their account screens (through background login) without being able to view the current screen. However, in order to enable this (by enabling the "normal" Screen Sharing option in System Preferences) Remote Desktop needs to be disabled. The question is - how can we run both Remote Desktop for administrators and VNC screen sharing for normal users while restricting normal users to logging in on a background window instead of viewing the front screen?

    Read the article

  • How do I troubleshoot a page not found error when configuring IIS6 Windows Server 2003? [Page Not Found]

    - by Vinicius Ottoni
    I have configured IIS6 in my windows server 2003 with this link: http://www.simongibson.com/intranet/iis6/ After that I create a new web site inside Web Sites directory. Inside the physical path I created an index.htm that has: <html> <body>Test</body> </html> But I got the following error: "The page cannot be found". When I put the same index file inside the Web Site Default physical path, it works. I configured the new web site with the link above using the IP configuration and without a Host Header.' What should I do to troubleshoot this or is there an obvious configuration error?

    Read the article

  • VMware player suspends on screensaver

    - by Chad
    I have this problem with my VMWare player. When my host operating system either goes into screen saver or I lock the work station with Windows Key + L. VMWare player pauses or halts everything. So when i come back to the computer and there is a background task working inside the virtual machine it does not progress until i've actualy loged back on. Is there any way to stop this behaviour with VMWare player and keep it running in the background even when the screen saver or the work station is locked? Version of VMWare is: 3.0.0 build-203739

    Read the article

  • How do I keep exchange 2013 from converting message bodies from HTML to RTF?

    - by wes
    Is there a way to keep Exchange 2013 from converting HTML message bodies of incoming messages into RTF? I'm looking at a message that was sent to an Exchange 2013 user that has this at the top of the message body (PR_RTF_COMPRESSED): {*\generator Microsoft Exchange Server;} {*\formatConverter converted from html;} The message body is in pure RTF. I expect to see HTML wrapped in RTF, which is what I want. I've looked at "Set-MailUser -Identity blah -UseMapiRichTextFormat Never", but that doesn't work for a user with an Exchange mailbox and I think it only applies to outgoing mail anyway.

    Read the article

  • Postfix filter messages and pass to PHP script

    - by John Magnolia
    Each time a user signs up to our website through an external provider we get a basic email with the body contents containing the user details. I want to write a personalised automatic reply to this user. The actual parsing of the email body and reply via PHP I have already wrote but how do I go about configuring this from postfix? At the moment it is configured using a roundcube Sieve plugin where the email gets moved into a folder "Subscribe". Is it possible to create a custom action here? Debain Squeeze, Postfix and Dovecot

    Read the article

  • How to Disable Hovering Selection Block in File Browser?

    - by BGM
    I am changing from Windows XP to Windows 7. One thing I cannot stand about Windows 7 is that whenever you mouse over files in Explorer (or other file-browser), it highlights the files with a semi-transparent block. This is nice, but I want to be able to double-click on the white area background of the directory, and I can't do this with the highlighted selection always there. The hovering-block is always in the way of the background - especially if there are a lot of files in the directory. (I don't even know what that hovering-block is called; if someone enlightens me, I'll re-title my post) Is there any way to get the file selector to work like XP?

    Read the article

  • How do I make control-click in Opera open new tabs?

    - by user21952-is-a-great-name
    Update: As of version 11.50, control-click opens the new tab in background, as desired. Yay! In Opera, as opposed to all other modern browsers I know, control-click does not open a new tab. Moreover, I couldn't find any good way to configure this behavior. The best available option seems to be this. However, it's so hacky that it won't work on HTTPS sites unless you enable user javascript there, which doesn't seem like a good idea. There also seem to be other proposed solutions, but none of them seem to work. I'd like this because my laptop has no middle mouse-button, and I'm a creature of habit. Do people have any ideas (for the latest version, 10.50)? I'd like ctrl-click to open a background tab, but I can do with foreground. Thank you!

    Read the article

  • Linux command line based spam checker?

    - by anonymous-one
    Does a command line based spam checker exist? We have created a mailbox at a 3rd party, and unfortunately decided on spam checking 'disabled' in the initial setup. There is no way to re-enable spam checking, the mailbox must be delete (and thus all contents lost) and re-created. Does anything exist where we can pump in either: A) Subject + from + to + body + all other fields. OR B) Raw message dump (headers + body). And the command line will let us know weather the email is possibly spam? Thanks.

    Read the article

  • Can I filter multiple column headers to display subheadings of each in Excel?

    - by Gigi
    I can't seem to find this anywhere... it may not even be possible without coding? I have a spreadsheet containing more than one heading in a single column. These headings are identified with blue background and white font. Each of these headings have items listed below them. These "subheadings" are smaller, auto-black font and no fill background. Currently I have to scroll down the spreadsheet to view all headers and their contents. How do I create a filter that would allow me to sort on whichever header I want, so that (only) the contents of that particular header are displayed?

    Read the article

  • Cronjob terminates early

    - by TheBigO
    In my crontab file I execute a script like so (I edit the crontab using sudo crontab -e): 01 * * * * bash /etc/m/start.sh The script runs some other scripts like so: sudo bash -c "/etc/m/abc.sh --option=1" & sleep 2 sudo bash -c "/etc/m/abc.sh --option=2" & When cron runs the script start.sh, I do ps aux | grep abc.sh and I see the abc.sh script running. After a couple of seconds, the script is no longer running, even though abc.sh should take hours to finish. If I do sudo bash /etc/m/start.sh & from the command line, everything works fine (the abc.sh scripts run for hours in the background until they complete). How do I debug this? Is there something I'm doing that is preventing these scripts from running in the background until they are done?

    Read the article

  • Mac Terminal - Color Co-ordinated

    - by Biscuit128
    I would like to create a couple of short cuts on my iMac which ssh on to my dev box and on to my prod box. I would like my dev connection to use the settings something similar to home-brew (green text black background) and my prod connection to use red text black background) - How can this be configured so that this is possible. Would I need multiple bashrc files one for prod and one for dev and source individually? If this is the case, how can i get the profiles to be sources as soon as i double click the shortcuts? Thanks

    Read the article

  • How to monitor a folder and trigger a command-line action when a file is created or edited?

    - by bigmattyh
    I need to set up some sort of a script on my Vista machine, so that whenever a file is added to a particular folder, it automatically triggers a background process that operates on the file. (The background process is just a command-line utility that takes the file name as an argument, along with some other predefined options.) I'd like to do this using native Windows features, if possible, for performance and maintenance reasons. I've looked into using Task Scheduler, but after perusing the trigger system for a while, I haven't been able to make much sense of it, and I'm not even sure if it's capable of doing what I need. I'd appreciate any suggestions. Thanks!

    Read the article

  • How do I change the colors used in MS Word 2007 track changes?

    - by kief_morris
    I'm reviewing a document in MS Word 2007, and when I add comments, the bubble has red text on a slightly lighter red background. This is pretty hard to read. The Track Changes Options dialog isn't of much help, I can change the background color for Comments, and it's slightly more readable. But I know that Word assigns a color to each user who reviews the document, I'd like to be able to change mine to a different one, and still have it work properly when I pass the document on to others. MS help is useless.

    Read the article

  • How to adjust wallpaper to make it fit the screen, for netbook using window 7 starter?

    - by Toan Tran
    I have a netbook, with window 7 starter. I was trying to change the wallpaper, and found this application: John's Background Switcher which said that I can make slide show of themes, I guess it's as you set wallpaper with window 7 ultimate. The default wallpaper was still fine until downloading that application. After trying it, error occurred, I couldnt change the background, so I closed it, but then the default wallpaper changed its size, the central image dropped out of screen, can see aaprt of it on `bottom right hand corner. I tried to adjust the image into center, but it didnt work when i right click on desktop - Graphic option - panel fit - "center image". Anybody can help me? how to adjust it back to normal as original?

    Read the article

  • Ajax Control Toolkit July 2011 Release and the New HTML Editor Extender

    - by Stephen Walther
    I’m happy to announce the July 2011 release of the Ajax Control Toolkit which includes important bug fixes and a completely new HTML Editor Extender control. You can download the July 2011 Release by visiting the Ajax Control Toolkit CodePlex site at: http://AjaxControlToolkit.CodePlex.com Using the New HTML Editor Extender Control You can use the new HTML Editor Extender to extend any standard ASP.NET TextBox control so that it supports rich formatting such as bold, italics, bulleted lists, numbered lists, typefaces and different foreground and background colors. The following code illustrates how you can extend a standard ASP.NET TextBox control with the HtmlEditorExtender: <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Simple.aspx.cs" Inherits="WebApplication1.Simple" %> <%@ Register TagPrefix="asp" Namespace="AjaxControlToolkit" Assembly="AjaxControlToolkit" %> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>Simple</title> </head> <body> <form id="form1" runat="server"> <asp:ToolkitScriptManager runat="Server" /> <asp:TextBox ID="txtComments" TextMode="MultiLine" Columns="60" Rows="8" runat="server" /> <asp:HtmlEditorExtender TargetControlID="txtComments" runat="server" /> </form> </body> </html> This page has the following three controls: ToolkitScriptManager – The ToolkitScriptManager renders all of the scripts required by the Ajax Control Toolkit. TextBox – The TextBox control is a standard ASP.NET TextBox which is set to display multiple lines (a TextArea instead of an Input element). HtmlEditorExtender – The HtmlEditorExtender is set to extend the TextBox control. You can use the standard TextBox Text property to read the rich text entered into the TextBox control on the server. Lightweight and HTML5 The HTML Editor Extender works on all modern browsers including the most recent versions of Mozilla Firefox (Firefox 5), Google Chrome (Chrome 12), and Apple Safari (Safari 5). Furthermore, the HTML Editor Extender is compatible with Microsoft Internet Explorer 6 and newer. The HTML Editor Extender is very lightweight. It takes advantage of the HTML5 ContentEditable attribute so it does not require an iframe or complex browser workarounds. If you select View Source in your browser while using the HTML Editor Extender, we hope that you will be pleasantly surprised by how little markup and script is generated by the HTML Editor Extender. Customizable Toolbar Buttons Depending on the web application that you are building, you will want to display different toolbar buttons with the HTML Editor Extender. One of the design goals of the HTML Editor Extender was to make it very easy for you to customize the toolbar buttons. Imagine, for example, that you want to use the HTML Editor Extender when accepting comments on blog posts. In that case, you might want to restrict the type of formatting that a user can display. You might want to enable a user to format text as bold or italic but you do not want the user to make any other formatting changes. The following page illustrates how you can customize the HTML Editor Extender toolbar: <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="CustomToolbar.aspx.cs" Inherits="WebApplication1.CustomToolbar" %> <%@ Register TagPrefix="asp" Namespace="AjaxControlToolkit" Assembly="AjaxControlToolkit" %> <html> <head runat="server"> <title>Custom Toolbar</title> </head> <body> <form id="form1" runat="server"> <asp:ToolkitScriptManager Runat="server" /> <asp:TextBox ID="txtComments" TextMode="MultiLine" Columns="50" Rows="10" Text="Hello <b>world!</b>" Runat="server" /> <asp:HtmlEditorExtender TargetControlID="txtComments" runat="server"> <Toolbar> <asp:Bold /> <asp:Italic /> </Toolbar> </asp:HtmlEditorExtender> </form> </body> </html> Notice that the HTML Editor Extender in the page above has a Toolbar subtag. You can list the toolbar buttons which you want to appear within the subtag. In the case above, only Bold and Italic buttons are displayed. Here is a complete list of the Toolbar buttons currently supported by the HTML Editor Extender: Undo Redo Bold Italic Underline StrikeThrough Subscript Superscript JustifyLeft JustifyCenter JustifyRight JustifyFull InsertOrderedList InsertUnorderedList CreateLink UnLink RemoveFormat SelectAll UnSelect Delete Cut Copy Paste BackgroundColorSelector ForeColorSelector FontNameSelector FontSizeSelector Indent Outdent InsertHorizontalRule HorizontalSeparator Of course the HTML Editor Extender was designed to be extensible. You can create your own buttons and add them to the control. Compatible with the AntiXSS Library When using the HTML Editor Extender on a public facing website, we strongly recommend that you use the HTML Editor Extender with the AntiXSS Library. If you allow users to submit arbitrary HTML, and you don’t take any action to strip out malicious markup, then you are opening your website to Cross-Site Scripting Attacks (XSS attacks). The HTML Editor Extender uses the Provider Model to support different Sanitizer Providers. The July 2011 release of the Ajax Control Toolkit ships with a single Sanitizer Provider which uses the AntiXSS library (see http://AntiXss.CodePlex.com ). A Sanitizer Provider is responsible for sanitizing HTML markup by removing any malicious elements, attributes, and attribute values. For example, the AntiXss Sanitizer Provider will take the following block of HTML: <b><a href=""javascript:doEvil()"">Visit Grandma</a></b> <script>doEvil()</script> And return the following sanitized block of HTML: <b><a href="">Visit Grandma</a></b> Notice that the JavaScript href and <SCRIPT> tag are both stripped out. Be aware that there are a depressingly large number of ways to sneak evil markup into your HTML. You definitely want a Sanitizer as a safety net. Before you can use the AntiXSS Sanitizer Provider, you must add three assemblies to your web application: AntiXSSLibrary.dll, HtmlSanitizationLibrary.dll, and SanitizerProviders.dll. All three assemblies are included with the CodePlex download of the Ajax Control Toolkit in the SanitizerProviders folder. Here’s how you modify your web.config file to use the AntiXSS Sanitizer Provider: <configuration> <configSections> <sectionGroup name="system.web"> <section name="sanitizer" requirePermission="false" type="AjaxControlToolkit.Sanitizer.ProviderSanitizerSection, AjaxControlToolkit"/> </sectionGroup> </configSections> <system.web> <compilation targetFramework="4.0" debug="true"/> <sanitizer defaultProvider="AntiXssSanitizerProvider"> <providers> <add name="AntiXssSanitizerProvider" type="AjaxControlToolkit.Sanitizer.AntiXssSanitizerProvider"></add> </providers> </sanitizer> </system.web> </configuration> You can detect whether the HTML Editor Extender is using the AntiXSS Sanitizer Provider by checking the HtmlEditorExtender SanitizerProvider property like this: if (MyHtmlEditorExtender.SanitizerProvider == null) { throw new Exception("Please enable the AntiXss Sanitizer!"); } When the SanitizerProvider property has the value null, you know that a Sanitizer Provider has not been configured in the web.config file. Because the AntiXSS library requires Full Trust, you cannot use the AntiXSS Sanitizer Provider with most shared website hosting providers. Because most shared hosting providers only support Medium Trust and not Full Trust, we do not recommend using the HTML Editor Extender with a public website hosted with a shared hosting provider. Why a New HTML Editor Control? The Ajax Control Toolkit now includes two HTML Editor controls. Why did we introduce a new HTML Editor control when there was already an existing HTML Editor? We think you will like the new HTML Editor much more than the previous one. We had several goals with the new HTML Editor Extender: Lightweight – We wanted to leverage HTML5 to create a lightweight HTML Editor. The new HTML Editor generates much less markup and script than the previous HTML Editor. Secure – We wanted to make it easy to integrate the AntiXSS library with the HTML Editor. If you are creating a public facing website, we strongly recommend that you use the AntiXSS Provider. Customizable – We wanted to make it easy for users to customize the toolbar buttons displayed by the HTML Editor. Compatibility – We wanted to ensure that the HTML Editor will work with the latest versions of the most popular browsers (including Internet Explorer 6 and higher). The old HTML Editor control is still included in the Ajax Control Toolkit and continues to live in the AjaxControlToolkit.HTMLEditor namespace. We have not modified the control and you can continue to use the control in the same way as you have used it in the past. However, we hope that you will consider migrating to the new HTML Editor Extender for the reasons listed above. Summary We’ve introduced a new Ajax Control Toolkit control with this release. I want to thank the developers and testers on the Superexpert team for the huge amount of work which they put into this control. It was a non-trivial task to build an entirely new control which has the complexity of the HTML Editor in less than 6 weeks. Please let us know what you think! We want to hear your feedback. If you discover issues with the new HTML Editor Extender control, or you have questions about the control, or you have ideas for how it can be improved, then please post them to this blog. Tomorrow starts a new sprint

    Read the article

  • Parallelism in .NET – Part 9, Configuration in PLINQ and TPL

    - by Reed
    Parallel LINQ and the Task Parallel Library contain many options for configuration.  Although the default configuration options are often ideal, there are times when customizing the behavior is desirable.  Both frameworks provide full configuration support. When working with Data Parallelism, there is one primary configuration option we often need to control – the number of threads we want the system to use when parallelizing our routine.  By default, PLINQ and the TPL both use the ThreadPool to schedule tasks.  Given the major improvements in the ThreadPool in CLR 4, this default behavior is often ideal.  However, there are times that the default behavior is not appropriate.  For example, if you are working on multiple threads simultaneously, and want to schedule parallel operations from within both threads, you might want to consider restricting each parallel operation to using a subset of the processing cores of the system.  Not doing this might over-parallelize your routine, which leads to inefficiencies from having too many context switches. In the Task Parallel Library, configuration is handled via the ParallelOptions class.  All of the methods of the Parallel class have an overload which accepts a ParallelOptions argument. We configure the Parallel class by setting the ParallelOptions.MaxDegreeOfParallelism property.  For example, let’s revisit one of the simple data parallel examples from Part 2: Parallel.For(0, pixelData.GetUpperBound(0), row => { for (int col=0; col < pixelData.GetUpperBound(1); ++col) { pixelData[row, col] = AdjustContrast(pixelData[row, col], minPixel, maxPixel); } }); .csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color: #ffffff; /*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em; } .csharpcode .lnum { color: #606060; } Here, we’re looping through an image, and calling a method on each pixel in the image.  If this was being done on a separate thread, and we knew another thread within our system was going to be doing a similar operation, we likely would want to restrict this to using half of the cores on the system.  This could be accomplished easily by doing: var options = new ParallelOptions(); options.MaxDegreeOfParallelism = Math.Max(Environment.ProcessorCount / 2, 1); Parallel.For(0, pixelData.GetUpperBound(0), options, row => { for (int col=0; col < pixelData.GetUpperBound(1); ++col) { pixelData[row, col] = AdjustContrast(pixelData[row, col], minPixel, maxPixel); } }); Now, we’re restricting this routine to using no more than half the cores in our system.  Note that I included a check to prevent a single core system from supplying zero; without this check, we’d potentially cause an exception.  I also did not hard code a specific value for the MaxDegreeOfParallelism property.  One of our goals when parallelizing a routine is allowing it to scale on better hardware.  Specifying a hard-coded value would contradict that goal. Parallel LINQ also supports configuration, and in fact, has quite a few more options for configuring the system.  The main configuration option we most often need is the same as our TPL option: we need to supply the maximum number of processing threads.  In PLINQ, this is done via a new extension method on ParallelQuery<T>: ParallelEnumerable.WithDegreeOfParallelism. Let’s revisit our declarative data parallelism sample from Part 6: double min = collection.AsParallel().Min(item => item.PerformComputation()); Here, we’re performing a computation on each element in the collection, and saving the minimum value of this operation.  If we wanted to restrict this to a limited number of threads, we would add our new extension method: int maxThreads = Math.Max(Environment.ProcessorCount / 2, 1); double min = collection .AsParallel() .WithDegreeOfParallelism(maxThreads) .Min(item => item.PerformComputation()); This automatically restricts the PLINQ query to half of the threads on the system. PLINQ provides some additional configuration options.  By default, PLINQ will occasionally revert to processing a query in parallel.  This occurs because many queries, if parallelized, typically actually cause an overall slowdown compared to a serial processing equivalent.  By analyzing the “shape” of the query, PLINQ often decides to run a query serially instead of in parallel.  This can occur for (taken from MSDN): Queries that contain a Select, indexed Where, indexed SelectMany, or ElementAt clause after an ordering or filtering operator that has removed or rearranged original indices. Queries that contain a Take, TakeWhile, Skip, SkipWhile operator and where indices in the source sequence are not in the original order. Queries that contain Zip or SequenceEquals, unless one of the data sources has an originally ordered index and the other data source is indexable (i.e. an array or IList(T)). Queries that contain Concat, unless it is applied to indexable data sources. Queries that contain Reverse, unless applied to an indexable data source. If the specific query follows these rules, PLINQ will run the query on a single thread.  However, none of these rules look at the specific work being done in the delegates, only at the “shape” of the query.  There are cases where running in parallel may still be beneficial, even if the shape is one where it typically parallelizes poorly.  In these cases, you can override the default behavior by using the WithExecutionMode extension method.  This would be done like so: var reversed = collection .AsParallel() .WithExecutionMode(ParallelExecutionMode.ForceParallelism) .Select(i => i.PerformComputation()) .Reverse(); Here, the default behavior would be to not parallelize the query unless collection implemented IList<T>.  We can force this to run in parallel by adding the WithExecutionMode extension method in the method chain. Finally, PLINQ has the ability to configure how results are returned.  When a query is filtering or selecting an input collection, the results will need to be streamed back into a single IEnumerable<T> result.  For example, the method above returns a new, reversed collection.  In this case, the processing of the collection will be done in parallel, but the results need to be streamed back to the caller serially, so they can be enumerated on a single thread. This streaming introduces overhead.  IEnumerable<T> isn’t designed with thread safety in mind, so the system needs to handle merging the parallel processes back into a single stream, which introduces synchronization issues.  There are two extremes of how this could be accomplished, but both extremes have disadvantages. The system could watch each thread, and whenever a thread produces a result, take that result and send it back to the caller.  This would mean that the calling thread would have access to the data as soon as data is available, which is the benefit of this approach.  However, it also means that every item is introducing synchronization overhead, since each item needs to be merged individually. On the other extreme, the system could wait until all of the results from all of the threads were ready, then push all of the results back to the calling thread in one shot.  The advantage here is that the least amount of synchronization is added to the system, which means the query will, on a whole, run the fastest.  However, the calling thread will have to wait for all elements to be processed, so this could introduce a long delay between when a parallel query begins and when results are returned. The default behavior in PLINQ is actually between these two extremes.  By default, PLINQ maintains an internal buffer, and chooses an optimal buffer size to maintain.  Query results are accumulated into the buffer, then returned in the IEnumerable<T> result in chunks.  This provides reasonably fast access to the results, as well as good overall throughput, in most scenarios. However, if we know the nature of our algorithm, we may decide we would prefer one of the other extremes.  This can be done by using the WithMergeOptions extension method.  For example, if we know that our PerformComputation() routine is very slow, but also variable in runtime, we may want to retrieve results as they are available, with no bufferring.  This can be done by changing our above routine to: var reversed = collection .AsParallel() .WithExecutionMode(ParallelExecutionMode.ForceParallelism) .WithMergeOptions(ParallelMergeOptions.NotBuffered) .Select(i => i.PerformComputation()) .Reverse(); On the other hand, if are already on a background thread, and we want to allow the system to maximize its speed, we might want to allow the system to fully buffer the results: var reversed = collection .AsParallel() .WithExecutionMode(ParallelExecutionMode.ForceParallelism) .WithMergeOptions(ParallelMergeOptions.FullyBuffered) .Select(i => i.PerformComputation()) .Reverse(); Notice, also, that you can specify multiple configuration options in a parallel query.  By chaining these extension methods together, we generate a query that will always run in parallel, and will always complete before making the results available in our IEnumerable<T>.

    Read the article

< Previous Page | 161 162 163 164 165 166 167 168 169 170 171 172  | Next Page >