Search Results

Search found 5917 results on 237 pages for 'wix extension'.

Page 55/237 | < Previous Page | 51 52 53 54 55 56 57 58 59 60 61 62  | Next Page >

  • drawImage don't work on chrome extention

    - by shrwea
    I use canvas drawImage in popup.html. But it doesn't work. Please advise me. popup.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> </head> <body> <canvas id="test"></canvas> <script src="test.js"></script> </body> </html> test.js var image = document.createElement("img"); image.src = "test.png"; image.onload = function(){ var canvas = document.getElementById('test'); var ctx = canvas.getContext('2d'); ctx.drawImage(image, 0, 0); }

    Read the article

  • Jquery in chrome plugin

    - by Cyclone
    There is jquery on the page my script is trying to access, and the code I am trying to execute runs fine in console. However, when I use chrome.tabs.executeScript on that single tab, it says that $ is undefined. How can I fix this? Thanks for the help!

    Read the article

  • chrome.tab.onactivated

    - by Leon Cunningham
    Can someone please show me how to use the chrome.tabs.onActivated. I would like to refresh the tab that is clicked/activated if the url equals: www.example.com. Or if this is the wrong method please tell me what to use. Can someone please show me how to use the chrome.tabs.onActivated. I would like to refresh the tab that is clicked/activated if the url equals: www.example.com. Or if this is the wrong method please tell me what to use.

    Read the article

  • How to fix "Xlib: extension "RECORD" missing on display :1" in vnc session?

    - by Manish Sapariya
    I am running a JNativeHook capture program on Ubuntu. When I run the session on default X session things are working fine. However when I run the same program from vnc session, it fails with "Xlib: extension "RECORD" missing on display". I checked that this extension is loaded in X which is started by display manager/init. However I am not sure if indeed is initialized during vncserver startup. I could not see anything related in the vnc log. I tried create custom xorg.conf with Module section, which explicitly loads RECORD extension as suggested by many posts but did not help. My environment: Xorg-server: 2.1.12.4-6 tightvncserver: 1.3.9 The same thing works fine on my CentOS 6.4 setup.

    Read the article

  • Firefox extension to dinamically change superbar icon, similar to windows live messenger.

    - by D Connors
    With seven's new superbar, windows live messenger is now able to display your status on the bar's icon (and not on the system tray). So that got me thinking, maybe a firefox extension could do something similar. Therefore, here's my question to those who understand the workings and spinning wheels behind firefox extensions: could a firefox extension change the superbar icon to display some useful info? Does the current functionality support it? EDIT: I think my question is not really clear. I just want to know if it's theoritically possible for a firefox addon to change the superbar icon dinamically. For instance, windows live messenger changes the icon acording to your status, and gmail notifier plus changes the icon according to your unread messages count. I'm just wondering if firefox as it is right now supports an extension with that functionality. I know that no current extensions do it, and I'm not looking for a gmail notifier (that was just an example). thanks

    Read the article

  • Why doesn't my PHP install see the MySQL extension?

    - by Evan Padd
    So I just set up PHP (Version 5.2.17), MySQL (5.5.28), and Apace (2.2) on my Windows 7 computer. I want to test a mysql connection, but the mysql extension is apparently not loaded (based on phpinfo()). Here's what I did: Changed the extension dir in the php.ini (extension_dir = ".;c:\php\ext") and uncommented the extension=php_mysql.dll line Copied libmysql.dll to the Apache's bin directory Added C:\php to the system's $PATH Restarted the server, then the computer And it's still not working. What did I miss? EDIT: I'm looking through phpinfo()'s outout and it says: "Server API | Apache 2.0 Handler" and I'm running 2.2. Is that a problem?

    Read the article

  • Have apache choose a php version based on the extension in the url, but with a single file on the filesystem

    - by Somejan
    I want to configure a local apache server to serve php files with different php versions. In my document root I have phpinfo.php, now if I go to http://localhost/phpinfo.php4, I want to see the phpinfo.php file processed with php4, if I go to http://localhost/phpinfo.php5 I want to see the same file processed with php5. Note: both php 4 and 5 are already installed side by side, I have no problem configuring apache to treat files that have a .php4 or .php5 extension on the filesystem with the correct php version. What I want is for apache to do the following: If the url-path ends in .php5, serve the file which has a .php extension on the filesystem using the application/x-httpd-php5 handler. If the url-path ends in .php4, serve the same file with the .php extension on the filesystem using the application/x-httpd-php4 handler.

    Read the article

  • Is there other usage of Comcast extension cable and splitter?

    - by Tim
    I have an unused Comcast high-speed internet self-install kit from 2006. It has two coils of extension cable, and a splitter, and some screws. The name of the cable is "extension cable" printed on the package. I wonder if that is its actual name? As ethernet cables are always useful, I wonder if the extension cables are totally worthless and should be tossed into a trash can? Or are they usable for some other purposes, or even sellable? Thanks! SVI Digital SV-2G Splitter (5/1000MHz): One interface of the cables: Screws

    Read the article

  • How can I get a java extension in LibreOffice to use the GTK+ theme?

    - by Roland Taylor
    I'm using LibreOffice with the LanguageTool extension, and it is kinda out of place (the options dialog at least) because it uses the open solaris default theme instead of my gtk+ theme. Is there a way to get it to use my gtk theme? Screenshot: Edited my question - it's not the default theme it uses, my apologies Additional details - it appears to be a webstart application or something, but I'm not a java expert so I don't know for sure :P

    Read the article

  • Lightbeam : Mozilla sort une extension permettant de savoir qui vous piste sur Internet et de suivre en temps réel le « tracking » de vos opérations

    Lightbeam : Mozilla sort une extension permettant de savoir qui vous piste sur Internet et de suivre en temps réel le « tracking » de vos opérationsLes internautes sont de plus en plus inquiets pour la sécurité de leur vie privée sur Internet. Les efforts des éditeurs de navigateurs et du W3C pour mettre sur pied une norme (le projet Do-Not-Track) pour permettre aux internautes d'autoriser ou non le « tracking » de leur activité sur le Web évolue lentement, avec d'un coté les annonceurs qui menacent...

    Read the article

  • Does the Adblock Plus extension prevent malicious code from downloading/executing? [closed]

    - by nctrnl
    Firefox and Chrome are my favourite browsers. The main reason is an extension called Adblock Plus. Basically, it blocks all the ad networks if you subscribe to one of the lists, like EasyList. Does it also protect against malicious ads on completely legitimate websites? For instance, several news websites use ad services that may allow a malicious user to insert "evil code". This makes the web very unsafe, especially for those who lack a serious antivirus product.

    Read the article

  • Java : Google introduit la programmation par contrat avec une extension open source qui aiderait aussi à sécuriser les programmes

    Java : Google introduit la programmation par contrat Avec une extension open source qui aiderait aussi à sécuriser les programmes Google vient de passer sous licence open source un projet destiné à introduire la programmation par contrat au langage Java. Ce paradigme de conception logiciel initié pour le langage Eiffel devrait faciliter le développement et aider la détection précoce des imperfections dans les premières phases de créations du code. Ce nouveau projet, appelé Cofoja (contraction de « Contracts For Java ») devrait également permettre de sécuriser les applications contre les exploits de type dépassement de tampon notamment, véritable plaie de sécurité po...

    Read the article

  • How to make CFileDialog synchronize the displayed filename with the selected extension?

    - by RobH
    We have a class that derives from CFileDialog that overrides the OnTypeChange() method to allow it to change the filename to keep it in synch with the selected extension whenever the user selects a new extension from the filter combobox. (Our filters are set to contain only one extension per filter entry.) Unfortunately, the way we are doing this seems to have been broken by the Vista style dialogue. (We were using SetControlText() to set the filename edit box to the filename with the newly selected extension, but the control ID seems to be different for the Vista style dialogue, and the one that I found using Spy++ works just as well as the old ID (i.e., it doesn't)..) Is there a better way to tell the CFileDialog object to update the filename field to use the new extension when the user selects a new filter? It has to work with the old XP style dialogue as well. Failing that, how to I force the use of the XP style dialogue so that I get my functionality back without the dialogue crashing on me? (I'd rather not go that route if at all possible.) I've found a way to get it to fall back to the XP style. I still want to get the new style dialogue to do what I want though.

    Read the article

  • Can I package my Eclipse extension so the right version is automatically installed?

    - by James
    Is there a way to build an Eclipse Update Site so that Eclipse 3.3 will install one version of my plug-in while Eclipse 3.4 will install another version? Background: I've become responsible for an Eclipse extension that has half a dozen plug-ins which depend on a "support" plug-in, and the support plug-in needs to be one version for Eclipse 3.3 and a different version for Eclipse 3.4/3.5. I currently have two separate features, "extension for 3.3" and "extension for 3.4+" but I'd like to not bother my users with this detail.

    Read the article

  • How to make Firefox extension auto install in nav bar?

    - by S M
    I'm working on a Firefox extension. I'd like to make it auto-install in the far right position on the nav bar when a user installs it. As it stands, a user has to go to View Toolbars Customize... and drag the extension to the nav bar once it's installed. I'd like to eliminate this step. The extension is here: http://madan.org/tickertool The XUL for my extension looks basically like this and it overlays browser.xul: <overlay id="my-ext-overlay" ... > <toolbarpalette id="BrowserToolbarPalette"> <toolbaritem id="my-ext-container" ... > <toolbarbutton id="my-ext-customize-image" ... /> <textbox id="my-ext-textbox" ... /> <hbox id="my-ext-buttons"> <image id="my-ext-button1" ... /> <image id="my-ext-button2" ... /> <image id="my-ext-button3" ... /> </hbox> </toolbaritem> </toolbarpalette> </overlay> I've seen code here ( https://developer.mozilla.org/en/Code_snippets/Toolbar ) that supposedly does what I'm looking for, but this code is if your extension is just a single button and I can't get it to work for me. The answer to my question is likely some modification of this code, but I haven't figured it out.

    Read the article

  • FluentPath: a fluent wrapper around System.IO

    - by Bertrand Le Roy
    .NET is now more than eight years old, and some of its APIs got old with more grace than others. System.IO in particular has always been a little awkward. It’s mostly static method calls (Path.*, Directory.*, etc.) and some stateful classes (DirectoryInfo, FileInfo). In these APIs, paths are plain strings. Since .NET v1, lots of good things happened to C#: lambda expressions, extension methods, optional parameters to name just a few. Outside of .NET, other interesting things happened as well. For example, you might have heard about this JavaScript library that had some success introducing a fluent API to handle the hierarchical structure of the HTML DOM. You know? jQuery. Knowing all that, every time I need to use the stuff in System.IO, I cringe. So I thought I’d just build a more modern wrapper around it. I used a fluent API based on an essentially immutable Path type and an enumeration of such path objects. To achieve the fluent style, a healthy dose of lambda expressions is being used to act on the objects. Without further ado, here’s an example of what you can do with the new API. In that example, I’m using a Media Center extension that wants all video files to be in their own folder. For that, I need a small tool that creates directories for each video file and moves the files in there. Here’s the code for it: Path.Get(args[0]) .Select(p => p.Extension == ".avi" || p.Extension == ".m4v" || p.Extension == ".wmv" || p.Extension == ".mp4" || p.Extension == ".dvr-ms" || p.Extension == ".mpg" || p.Extension == ".mkv") .CreateDirectory(p => p.Parent .Combine(p.FileNameWithoutExtension)) .Previous() .Move(p => p.Parent .Combine(p.FileNameWithoutExtension) .Combine(p.FileName)); This code creates a Path object pointing at the path pointed to by the first command line argument of my executable. It then selects all video files. After that, it creates directories that have the same names as each of the files, but without their extension. The result of that operation is the set of created directories. We can now get back to the previous set using the Previous method, and finally we can move each of the files in the set to the corresponding freshly created directory, whose name is the combination of the parent directory and the filename without extension. The new fluent path library covers a fair part of what’s in System.IO in a single, convenient API. Check it out, I hope you’ll enjoy it. Suggestions are more than welcome. For example, should I make this its own project on CodePlex or is this informal style just OK? Anything missing that you’d like to see? Is there a specific example you’d like to see expressed with the new API? Bugs? The code can be downloaded from here (this is under a new BSD license): http://weblogs.asp.net/blogs/bleroy/Samples/FluentPath.zip

    Read the article

  • Extension or settings in Chrome that syncs settings and extensions?

    - by Aequitarum Custos
    I use Chrome at home and the office, and I was wondering if there is an extension that will sync not just my Chrome settings and bookmarks, but also my extensions and their settings between computers I run Chrome on? http://www.google.com/support/forum/p/Chrome/thread?tid=469242bc0eb964d6&hl=en Is a thread asking for support on it, but nobody mentions if there is an extension created for Chrome doing this, or if it was ever implemented.

    Read the article

  • Building extensions for Expression Blend 4 using MEF

    - by Timmy Kokke
    Introduction Although it was possible to write extensions for Expression Blend and Expression Design, it wasn’t very easy and out of the box only one addin could be used. With Expression Blend 4 it is possible to write extensions using MEF, the Managed Extensibility Framework. Until today there’s no documentation on how to build these extensions, so look thru the code with Reflector is something you’ll have to do very often. Because Blend and Design are build using WPF searching the visual tree with Snoop and Mole belong to the tools you’ll be using a lot exploring the possibilities.  Configuring the extension project Extensions are regular .NET class libraries. To create one, load up Visual Studio 2010 and start a new project. Because Blend is build using WPF, choose a WPF User Control Library from the Windows section and give it a name and location. I named mine DemoExtension1. Because Blend looks for addins named *.extension.dll  you’ll have to tell Visual Studio to use that in the Assembly Name. To change the Assembly Name right click your project and go to Properties. On the Application tab, add .Extension to name already in the Assembly name text field. To be able to debug this extension, I prefer to set the output path on the Build tab to the extensions folder of Expression Blend. This means that everything that used to go into the Debug folder is placed in the extensions folder. Including all referenced assemblies that have the copy local property set to false. One last setting. To be able to debug your extension you could start Blend and attach the debugger by hand. I like it to be able to just hit F5. Go to the Debug tab and add the the full path to Blend.exe in the Start external program text field. Extension Class Add a new class to the project.  This class needs to be inherited from the IPackage interface. The IPackage interface can be found in the Microsoft.Expression.Extensibility namespace. To get access to this namespace add Microsoft.Expression.Extensibility.dll to your references. This file can be found in the same folder as the (Expression Blend 4 Beta) Blend.exe file. Make sure the Copy Local property is set to false in this reference. After implementing the interface the class would look something like: using Microsoft.Expression.Extensibility; namespace DemoExtension1 { public class DemoExtension1:IPackage { public void Load(IServices services) { } public void Unload() { } } } These two methods are called when your addin is loaded and unloaded. The parameter passed to the Load method, IServices services, is your main entry point into Blend. The IServices interface exposes the GetService<T> method. You will be using this method a lot. Almost every part of Blend can be accessed thru a service. For example, you can use to get to the commanding services of Blend by calling GetService<ICommandService>() or to get to the Windowing services by calling GetService<IWindowService>(). To get Blend to load the extension we have to implement MEF. (You can get up to speed on MEF on the community site or read the blog of Mr. MEF, Glenn Block.)  In the case of Blend extensions, all that needs to be done is mark the class with an Export attribute and pass it the type of IPackage. The Export attribute can be found in the System.ComponentModel.Composition namespace which is part of the .NET 4 framework. You need to add this to your references. using System.ComponentModel.Composition; using Microsoft.Expression.Extensibility;   namespace DemoExtension1 { [Export(typeof(IPackage))] public class DemoExtension1:IPackage { Blend is able to find your addin now. Adding UI The addin doesn’t do very much at this point. The WPF User Control Library came with a UserControl so lets use that in this example. I just drop a Button and a TextBlock onto the surface of the control to have something to show in the demo. To get the UserControl to work in Blend it has to be registered with the WindowService.  Call GetService<IWindowService>() on the IServices interface to get access to the windowing services. The UserControl will be used in Blend on a Palette and has to be registered to enable it. This is done by calling the RegisterPalette on the IWindowService interface and passing it an identifier, an instance of the UserControl and a caption for the palette. public void Load(IServices services) { IWindowService windowService = services.GetService<IWindowService>(); UserControl1 uc = new UserControl1(); windowService.RegisterPalette("DemoExtension", uc, "Demo Extension"); } After hitting F5 to start debugging Expression Blend will start. You should be able to find the addin in the Window menu now. Activating this window will show the “Demo Extension” palette with the UserControl, style according to the settings of Blend. Now what? Because little is publicly known about how to access different parts of Blend adding breakpoints in Debug mode and browsing thru objects using the Quick Watch feature of Visual Studio is something you have to do very often. This demo extension can be used for that purpose very easily. Add the click event handler to the button on the UserControl. Change the contructor to take the IServices interface and store this in a field. Set a breakpoint in the Button_Click method. public partial class UserControl1 : UserControl { private readonly IServices _services;   public UserControl1(IServices services) { _services = services; InitializeComponent(); }   private void button1_Click(object sender, RoutedEventArgs e) { } } Change the call to the constructor in the load method and pass it the services property. public void Load(IServices services) { IWindowService service = services.GetService<IWindowService>(); UserControl1 uc = new UserControl1(services); service.RegisterPalette("DemoExtension", uc, "Demo Extension"); } Hit F5 to compile and start Blend. Got to the window menu and start show the addin. Click on  the button to hit the breakpoint. Now place the carrot text _services text in the code window and hit Shift+F9 to show the Quick Watch window. Now start exploring and discovering where to find everything you need.  More Information The are no official resources available yet. Microsoft has released one extension for expression Blend that is very useful as a reference, the Microsoft Expression Blend® Add-in Preview for Windows® Phone. This will install a .extension.dll file in the extension folder of Blend. You can load this file with Reflector and have a peek at how Microsoft is building his addins. Conclusion I hope this gives you something to get started building extensions for Expression Blend. Until Microsoft releases the final version, which hopefully includes more information about building extensions, we’ll have to work on documenting it in the community.

    Read the article

  • Include Method Extension for IObjectSet What about the mocks?

    Eager loading with Entity Framework depends on the special ObjectQuery.Include method. We’ve had that from Day 1 (first version of ef). Now we use ObjectSets in EF4 which inherit from ObjectQuery (thereby inheriting Include) and also implement IObjectSet. IObjectSet allows us to break the queries apart from ObjectQuery and ObjectContext so we can write persistent ignorant, testable code. But IObjectSet doesn’t come with the Include method and you have to create an extension method to...Did you know that DotNetSlackers also publishes .net articles written by top known .net Authors? We already have over 80 articles in several categories including Silverlight. Take a look: here.

    Read the article

  • Le mystère du "Framework Duqu" est résolu, le malware aurait été écrit avec une extension C orientée objet créée sur mesure

    Le mystère du "Framework Duqu" est résolu Le malware aurait été écrit avec une extension C orientée objet créée sur mesure Mise à Jour du 20/03/2012 par MiaowZedong Les chercheurs de Kaspersky ont annoncé hier (19/03/2012) qu'ils avaient résolu « avec un niveau de certitude très élevé » le mystère Duqu. L'expert Igor Soumenkov commence par remercier les nombreux développeurs qui ont suggéré des pistes d'investigation : il annonce avoir reçu plus de 200 commentaires sur son blog et 60+ emails. Il dit donc « un grand merci » à tous ces participants. Parmi les différentes suggestions, le LISP, le Forth, Google Go, l'Erlang, Delphi, les com...

    Read the article

  • Le porte-parole de 42Registery répond à Développez suite aux passions déchaînées par le lancement de l'extension de domaine .42

    Le porte-parole de 42Registery répond à Développez Suite aux passions déchaînées par le lancement de l'extension de domaine .42 Interview réalisée par Idelways et Gordon Fowler Une dizaine de jours après le lancement de 42Registery, (lire ci-avant), le projet ne fait pas l'unanimité et déchaîne les passions. Le débat principal se cristallise sur les demandes d'enregistrement de sites en .42, sites qui doivent par leur contenu et leur activité, se conformer à une charte. Selon les fondateurs du projet, il ne s'agit en aucun cas de censure. La censure consisterait "à refuser une requête qui serait pourtant conforme à notre charte"

    Read the article

  • JavaOne 2012 : Oracle sort la Preview de NetBeans 7.3 et dévoile Easel, une extension pour la création des clients RESTful JavaScript

    JavaOne 2012 : Oracle sort la Preview de NetBeans 7.3 et dévoile le projet Easel une extension pour la création des clients RESTful à base de JavaScript JavaOne 2012 bat son plein. Le Masonic Auditorium de San Francisco vibre aux couleurs de l'écosystème Java qui est en train d'être disséqué par les experts de l'industrie. Lors de la session consacrée à NetBeans, l'environnement de développement intégré open source pour Java, PHP, C et C++, Oracle a annoncé la sortie de la preview de NetBeans 7.3, la prochaine mise à jour majeure de l'EDI. [IMG]http://ftp-developpez.com/gordon-fowler/NetBeans%20Logo.png[/IMG] Le futur standard du We...

    Read the article

  • Using u32 together with extension headers (how to jump over them?)

    - by bortzmeyer
    I'm trying to filter on some parts of the payload, for an IPv6 packet with extension headers (for instance Destination Options). ip6tables works fine with conditions like --proto udp or --dport 109, even when the packet has extension headers. Netfilter clearly knows how to jump over Destination Options to find the UDP header. Now, I would like to use the u32 module to match a byte in the payload (say "I want the third byte of the payload to be 42). If the packet has no extension headers something like --u32 "48&0x0000ff00=0x2800"` (48 = 40 bytes for the IPv6 header + 8 for the UDP header) works fine, If the packet has a Destination Options, it no longer matches. I would like to write a rule that will work whether the packet has Destination Options or not. I do not find a way to tell Netfilter to parse until the UDP header (something that it is able to do, otherwise --dport 109 would not work) then to leave u32 parse the rest. I'm looking for a simple way, otherwise, as BatchyX mentions, I could write a kernel module doing what I want.

    Read the article

  • Will creating a background thread in a WCF service during a call, take up a thread in the ASP .NET t

    - by Nate Pinchot
    The following code is part of a WCF service. Will eventWatcher take up a thread in the ASP .NET thread pool, even if it is set IsBackground = true? /// <summary> /// Provides methods to work with the PhoneSystem web services SDK. /// This is a singleton since we need to keep track of what lines (extensions) are open. /// </summary> public sealed class PhoneSystemWebServiceFactory : IDisposable { // singleton instance reference private static readonly PhoneSystemWebServiceFactory instance = new PhoneSystemWebServiceFactory(); private static readonly object l = new object(); private static volatile Hashtable monitoredExtensions = new Hashtable(); private static readonly PhoneSystemWebServiceClient webServiceClient = CreateWebServiceClient(); private static volatile bool isClientRegistered; private static volatile string clientHandle; private static readonly Thread eventWatcherThread = new Thread(EventPoller) {IsBackground = true}; #region Constructor // these constructors are hacks to make the C# compiler not mark beforefieldinit // more info: http://www.yoda.arachsys.com/csharp/singleton.html static PhoneSystemWebServiceFactory() { } PhoneSystemWebServiceFactory() { } #endregion #region Properties /// <summary> /// Gets a thread safe instance of PhoneSystemWebServiceFactory /// </summary> public static PhoneSystemWebServiceFactory Instance { get { return instance; } } #endregion #region Private methods /// <summary> /// Create and configure a PhoneSystemWebServiceClient with basic http binding and endpoint from app settings. /// </summary> /// <returns>PhoneSystemWebServiceClient</returns> private static PhoneSystemWebServiceClient CreateWebServiceClient() { string url = ConfigurationManager.AppSettings["PhoneSystemWebService_Url"]; if (string.IsNullOrEmpty(url)) { throw new ConfigurationErrorsException( "The AppSetting \"PhoneSystemWebService_Url\" could not be found. Check the application configuration and ensure that the element exists. Example: <appSettings><add key=\"PhoneSystemWebService_Url\" value=\"http://xyz\" /></appSettings>"); } return new PhoneSystemWebServiceClient(new BasicHttpBinding(), new EndpointAddress(url)); } #endregion #region Event poller public static void EventPoller() { while (true) { if (Thread.CurrentThread.ThreadState == ThreadState.Aborted || Thread.CurrentThread.ThreadState == ThreadState.AbortRequested || Thread.CurrentThread.ThreadState == ThreadState.Stopped || Thread.CurrentThread.ThreadState == ThreadState.StopRequested) break; // get events //webServiceClient.GetEvents(clientHandle, 30, 100); } Thread.Sleep(5000); } #endregion #region Client registration methods private static void RegisterClientIfNeeded() { if (isClientRegistered) { return; } lock (l) { // double lock check if (isClientRegistered) { return; } //clientHandle = webServiceClient.RegisterClient("PhoneSystemWebServiceFactoryInternal", null); isClientRegistered = true; } } private static void UnregisterClient() { if (!isClientRegistered) { return; } lock (l) { // double lock check if (!isClientRegistered) { return; } //webServiceClient.UnegisterClient(clientHandle); } } #endregion #region Phone extension methods public bool SubscribeToEventsForExtension(string extension) { if (monitoredExtensions.Contains(extension)) { return false; } lock (monitoredExtensions.SyncRoot) { // double lock check if (monitoredExtensions.Contains(extension)) { return false; } RegisterClientIfNeeded(); // open line so we receive events for extension LineInfo lineInfo; try { //lineInfo = webServiceClient.OpenLine(clientHandle, extension); } catch (FaultException<PhoneSystemWebSDKErrorDetail>) { // TODO: log error return false; } // add extension to list of monitored extensions //monitoredExtensions.Add(extension, lineInfo.lineID); monitoredExtensions.Add(extension, 1); // start event poller thread if not already started if (eventWatcherThread.ThreadState == ThreadState.Stopped || eventWatcherThread.ThreadState == ThreadState.Unstarted) { eventWatcherThread.Start(); } return true; } } public bool UnsubscribeFromEventsForExtension(string extension) { if (!monitoredExtensions.Contains(extension)) { return false; } lock (monitoredExtensions.SyncRoot) { if (!monitoredExtensions.Contains(extension)) { return false; } // close line try { //webServiceClient.CloseLine(clientHandle, (int) monitoredExtensions[extension]); } catch (FaultException<PhoneSystemWebSDKErrorDetail>) { // TODO: log error return false; } // remove extension from list of monitored extensions monitoredExtensions.Remove(extension); // if we are not monitoring anything else, stop the poller and unregister the client if (monitoredExtensions.Count == 0) { eventWatcherThread.Abort(); UnregisterClient(); } return true; } } public bool IsExtensionMonitored(string extension) { lock (monitoredExtensions.SyncRoot) { return monitoredExtensions.Contains(extension); } } #endregion #region Dispose public void Dispose() { lock (l) { // close any open lines var extensions = monitoredExtensions.Keys.Cast<string>().ToList(); while (extensions.Count > 0) { UnsubscribeFromEventsForExtension(extensions[0]); extensions.RemoveAt(0); } if (!isClientRegistered) { return; } // unregister web service client UnregisterClient(); } } #endregion }

    Read the article

< Previous Page | 51 52 53 54 55 56 57 58 59 60 61 62  | Next Page >