Mehr

Die Verwendung einer Abfrage in einer while-Schleife führt zum Einfrieren der Android-Anwendung

Die Verwendung einer Abfrage in einer while-Schleife führt zum Einfrieren der Android-Anwendung


Ich habe einige Probleme mit der while-Schleife + Abfrage. Was ich versuche, ist, den Standort des Benutzers zu verfolgen (mithilfe von onlocationChanged) und weiter abzufragenFeatureLayerbis die Abfrage ein Ergebnis zurückgibt, und stoppen Sie dann die while-Schleife, die einen booleschen Wert verwendet. Das Problem, sobald die "while" -Schleife gestartet wird, ist, dass die Anwendung einfriert, hier ist mein Code:

boolean noResults=true while(noResults) { pointGeometry=MyPosition; //myPosition ändert seinen Wert in "onLocationChanged" mit dem Listener, siehe Code unten Graphic pointGraphic = new Graphic(pointGeometry, simpleMarker); SpatialReference SpatialRef = MapFragment.mMapView.getSpatialReference(); Einheiteneinheit = SpatialRef.getUnit(); doppelt angepasste Genauigkeit = b_dist; Polygon p = GeometryEngine.buffer(pointGeometry, SpatialRef,adjustedAccuracy, unit); Abfrage q = neue Abfrage(); q.setGeometry(p); q.setSpatialRelationship(SpatialRelationship.INTERSECTS); fLayer.selectFeatures(q, SELECTION_METHOD.NEW, Rückruf4); } public void onLocationChanged(Location loc) { double locy = loc.getLatitude(); double locx = loc.getLongitude(); Punkt wgspoint = neuer Punkt (locx, locy); mLocation = (Point) GeometryEngine.project(wgspoint, SpatialReference.create(4326), mMapView.getSpatialReference()); //Hier ändert myPosition seinen Wert. meinePosition = mStandort; } RückrufListener callback4 = neuer CallbackListener() { public void onCallback(FeatureSet fSet) { Graphic[] grh=fSet.getGraphics(); if(grh.length>0){ noResults=false; showTaost("Es gibt ein Ergebnis"); } });

Gibt es eine Alternative zur while-Schleife, um dies zu beheben? Wenn nicht, wie kann ich so etwas wie eine Verzögerung verwenden (den Feature Layer alle 5 Sekunden abfragen oder so ähnlich)?


Ich habe das Problem mit einem "Handler" gelöst, der den Feature Layer alle 5 Sekunden abfragt. Dadurch wird verhindert, dass der Hauptthread den Fehler "Anwendung reagiert nicht" generiert:

Handler m_handler=neuer Handler(); Ausführbar m_ausführbar; m_runnable = new Runnable () { public void run () { // Code hier abfragen m_handler.postDelayed (m_runnable, 5000); } }; m_handler.postDelayed(m_runnable, 0);

Die SQL-Abfrage befindet sich im Status &ldquoExecution&rdquo und wird weiter ausgeführt

Ich versuche, eine einfache Abfrage in SQL 2102 select count(*) from cab_details auszuführen, aber sie wird weiterhin ausgeführt.

Wenn ich den SQL-Dienst neu starte, wird das Ergebnis in nur einer Sekunde angezeigt. (Anzahl liegt bei etwa 250.000 - kein größerer Wert)

Wenn ich nach 10 Minuten versuche, dieselbe Abfrage auszuführen, wird sie erneut ausgeführt.

Ich wollte den SQL-Dienst alle 10 Minuten neu starten, um das Ergebnis zu erhalten.


Styling der Autocomplete- und SearchBox-Widgets

Standardmäßig sind die von Autocomplete und SearchBox bereitgestellten UI-Elemente so gestaltet, dass sie in eine Google-Karte aufgenommen werden. Möglicherweise möchten Sie das Design an Ihre eigene Website anpassen. Die folgenden CSS-Klassen sind verfügbar. Alle unten aufgeführten Klassen gelten sowohl für das Autocomplete- als auch für das SearchBox-Widget.

CSS-Klassen für Autocomplete- und SearchBox-Widgets

CSS-Klasse Beschreibung
pac-container Das visuelle Element, das die Liste der vom Place Autocomplete-Dienst zurückgegebenen Vorhersagen enthält. Diese Liste wird als Dropdown-Liste unter dem Autocomplete- oder SearchBox-Widget angezeigt.
pac-symbol Das Symbol, das links neben jedem Element in der Liste der Vorhersagen angezeigt wird.
pac-artikel Ein Element in der Liste der Vorhersagen, die vom Autocomplete- oder SearchBox-Widget bereitgestellt wird.
pac-item:hover Das Element, wenn der Benutzer den Mauszeiger darüber bewegt.
pac-artikel-ausgewählt Das Element, wenn der Benutzer es über die Tastatur auswählt. Hinweis: Ausgewählte Artikel sind Mitglied dieser Klasse und der pac-item-Klasse.
pac-item-abfrage Eine Spanne innerhalb eines pac-Elements, die den Hauptteil der Vorhersage darstellt. Bei geografischen Standorten enthält dies einen Ortsnamen wie "Sydney" oder einen Straßennamen und eine Hausnummer wie "10 King Street". Bei textbasierten Suchen wie „Pizza in New York“ enthält es den Volltext der Abfrage. Standardmäßig ist die pac-item-query schwarz eingefärbt. Wenn pac-item zusätzlichen Text enthält, befindet er sich außerhalb von pac-item-query und erbt seinen Stil von pac-item . Es ist standardmäßig grau eingefärbt. Der Zusatztext ist typischerweise eine Adresse.
pac-abgestimmt Der Teil der zurückgegebenen Vorhersage, der der Eingabe des Benutzers entspricht. Standardmäßig wird dieser übereinstimmende Text fett hervorgehoben. Beachten Sie, dass sich der übereinstimmende Text an einer beliebigen Stelle innerhalb von pac-item befinden kann. Es ist nicht unbedingt Teil von pac-item-query , und es könnte teilweise innerhalb von pac-item-query sowie teilweise im restlichen Text in pac-item enthalten sein.


Das Aktualisieren einer SharePoint-Liste über eine Access-Abfrage und VBA-Code erschöpft die Systemressourcen

Ich entschuldige mich: Ich habe dies bereits auf StackOverflow gefragt, aber keine Antworten erhalten. Ich hoffe, dass das erneute Posten auf einer Website, die mehr an SharePoint ausgerichtet ist, zu mehr Erkenntnissen führen könnte.

Aus Gründen, auf die ich keinen Einfluss habe, verwenden wir Access 2010, um verknüpfte SharePoint-Listen zu aktualisieren, damit sie mit unserer CMDB synchronisiert bleiben (wir verwenden auch SharePoint 2010). Wir beziehen Berichte aus der CMDB im CSV-Format und verknüpfen diese ebenfalls mit Access. Wir verwenden dann eine Kombination aus Access VBA und vordefinierten Abfragen, um neue Daten hinzuzufügen oder vorhandene Daten zu aktualisieren oder vorläufig zu löschen. Vor allem eine Liste macht Probleme. Insbesondere Einfügungen/vorläufige Löschungen scheinen zu funktionieren, aber Access erschöpft Ressourcen und stürzt ab, wenn die Update-Abfrage ausgeführt wird. Das Aufrufen des Ressourcenmonitors zeigt, dass die Speicherauslastung während der Ausführung der Anwendung ständig zunimmt und Access schließlich fehlschlägt, wenn

1,6 GB oder RAM wurden ihm zugewiesen (auf einem 4-GB-Rechner mit einer 6-GB-Auslagerungsdatei, Windows 7 64 Bit, aber 32 Bit Access).

Ich verwende zwei Abfragen zusätzlich zum VBA-Code. Eine Abfrage ruft ein Resultset ab, mit dem ich feststellen kann, welche Zeile in der SharePoint-Liste aktualisiert werden soll (falls vorhanden), während die andere identifiziert, welche Spalten aus dem Bericht die entsprechenden Spalten in der SharePoint-Liste aktualisieren, die Join-Bedingung zwischen dem verknüpften Bericht und die entsprechende Liste und die zu aktualisierende Zeile in SP, identifiziert durch ihren zusammengesetzten Schlüssel. Dann iteriere ich über die erste Ergebnismenge, pausiere 0,1 Sekunden zwischen jeder Zeile und wende die entsprechenden Parameter auf die Aktualisierungsabfrage an. Ziemlich normales Zeug, denke ich.

Wir müssen diesen (oder einen im Wesentlichen ähnlichen) Ansatz verwenden, da die SharePoint-Liste zugehörige Workflows hat. Wir stellten fest, dass die Aktualisierungen zu schnell erfolgten, wenn wir unser SQL schrieben, um Standard-Set-Typ-Updates durchzuführen, wodurch die Workflow-Engine von Sharepoint überlastet und die Workflows fehlgeschlagen sind.

HINWEIS: Ich erhalte bis zu dem Punkt, an dem Access abstürzt und SharePoint aktualisiert wird, keinen Hinweis auf ein Problem oder einen Fehler – erneut, bis Access aufgrund einer Erschöpfung der Systemressourcen abstürzt.


Umgang mit Datenbankverbindungen in einem Python-Bibliotheksmodul

Ich habe in Python eine Bibliothek erstellt, die Funktionen für den Zugriff auf eine Datenbank enthält. Dies ist eine Wrapper-Bibliothek um eine Anwendungsdatenbank eines Drittanbieters, die aufgrund der Tatsache geschrieben wurde, dass die Drittanbieteranwendung keine anständige API bietet. Nun habe ich ursprünglich jede Funktion für die Dauer des Funktionsaufrufs eine Datenbankverbindung öffnen lassen, was in Ordnung war, bis meine Programmlogik verschachtelte Aufrufe der Funktionen verwendet, bei denen ich dann eine bestimmte Funktion einige tausend Mal aufrufen würde. Das war nicht sehr performant. Die Profilerstellung zeigte, dass der Overhead im Datenbankverbindungsaufbau lag - einmal pro Funktionsaufruf. Also habe ich die offene Verbindung aus der Funktion(en) in das Modul selbst verschoben, damit die Datenbankverbindung beim Importieren des Bibliotheksmoduls geöffnet wird. Das hat mir eine akzeptable Leistung gebracht.

Dazu habe ich nun zwei Fragen. Muss ich mir erstens Sorgen machen, dass ich die Datenbankverbindung nicht mehr explizit schließe und wie könnte ich dies mit diesem Setup explizit tun? Zweitens: Fällt das, was ich getan habe, auch nur annähernd in den Bereich der guten Praxis und wie könnte ich das sonst angehen?


Wenn Sie eine pro Abfrage / Transaktion erstellen, ist es viel einfacher, das "Schließen" der Verbindungen zu verwalten.

Ich kann verstehen, warum der gesunde Menschenverstand vorschreibt, dass Sie eine öffnen und durchgehend verwenden sollten, aber Sie werden auf Probleme mit unterbrochenen Verbindungen und Multithreading stoßen. Ihr nächster Schritt besteht also darin, einen Pool von beispielsweise 50 Verbindungen zu öffnen und alle offen zu halten und sie an verschiedene Prozesse zu verteilen. Und dann werden Sie feststellen, dass das .NET-Framework genau das bereits für Sie tut.

Wenn Sie eine Verbindung öffnen, wenn Sie sie benötigen, und sie nach Abschluss entsorgen, wird die Verbindung dadurch nicht geschlossen, sondern nur zur erneuten Verwendung an den Verbindungspool zurückgegeben.

Best Practice ist es, eine Verbindung pro Abfrage zu erstellen - und im Fall der Anzeige von Daten ist es Best Practice, die Abfrage einbringen zu lassen alle die benötigten Daten auf einmal.

In .NET wird beim Aufrufen von SqlConnection.Open() standardmäßig immer das Verbindungspooling transparent verwendet (siehe "Verwenden des Verbindungspoolings mit SQL Server" auf MSDN). Sie können also einfach mit Open() eine neue Verbindung herstellen und dann Close() aufrufen, wenn Sie fertig sind, und .NET wird das Richtige tun.

Beachten Sie, dass ohne Verbindungspooling eine Verbindung pro Abfrage eine sehr schlechte Idee wäre, da das Erstellen echter Datenbankverbindungen sehr kostspielig sein kann (Authentifizierung, Netzwerk-Overhead usw.) und die Anzahl gleichzeitig geöffneter Verbindungen normalerweise sehr begrenzt ist.

Entwickler möchten manchmal ihren Code "optimieren", um ihre Verbindungsobjekte wiederzuverwenden. Angesichts des Kontexts dieser Frage, die uns in das .Net-Ökosystem bringt, ist dies fast immer ein Fehler. (Hinweis: Viele andere Plattformen handhaben dies auch auf ähnliche Weise).

ADO.Net hat eine Funktion namens Verbindungspooling. Wenn Sie ein neues Verbindungsobjekt erstellen und öffnen, fordern Sie in Wirklichkeit eine Verbindung von einem Pool an. Wenn Sie eine Verbindung schließen, geben Sie sie an den Pool zurück.

Es ist wichtig, die Objekte zu verstehen, die wir direkt im Code verwenden: SqlConnection, MySqlConnection, OleDbConnection usw. sind alle einfach Wrapper um eine echte zugrunde liegende Verbindung, die von ADO.Net verwaltet wird. Die realen Verbindungen von ADO.Net sind viel "schwerer" und teurer aus Performance-Gesichtspunkten. Es sind diese zugrunde liegenden Objekte, die Sorgen wie Authentifizierung, Netzwerktransit, Verschlüsselung usw. haben, und diese Dinge überwiegen bei weitem die geringe Menge an Speicher in dem Objekt, das Sie tatsächlich in Ihrem eigenen Code sehen.

Wenn Sie versuchen, Ihr Verbindungsobjekt wiederzuverwenden, gewinnen Sie Effizienz im Kleinen auf Kosten des viel Größeren. weil Sie die Fähigkeit des ADO.Net-Verbindungspools unterbrechen, die wichtigen zugrunde liegenden Verbindungen effektiv zu verwalten.

Die Wiederverwendung einer Verbindung über eine Anwendung oder HTTP-Anforderung kann Sie auch dazu zwingen, unbeabsichtigt Vorgänge zu serialisieren, die ansonsten möglicherweise asynchron ausgeführt werden könnten, und zu einem Leistungsengpass werden. Ich habe dies in realen Anwendungen gesehen.

Im Fall des Webseiten-Beispiels hier, wo Sie zumindest die kleine Verbindung nur für die Dauer einer einzelnen http-Anfrage/-Antwort halten, könnten Sie noch effizienter werden, indem Sie auswerten, welche Abfragen Sie in Ihrer Anfrage-Pipeline ausführen, und versuchen, diese zu erhalten sie auf so wenige separate Anfragen an die Datenbank wie möglich herunter (Hinweis: Sie können mehr als eine Abfrage in einem einzelnen SQL-String senden und DataReader.NextResult() verwenden oder verschiedene Tabellen in einem DataSet überprüfen, um zwischen ihnen zu wechseln).

Mit anderen Worten, anstatt an die Minimierung der Anzahl der erstellten Verbindungsobjekte zu denken (indem Sie eine Verbindung für eine Anwendung oder HTTP-Anforderung wiederverwenden), denken Sie an eine Verbindung für jeden Aufruf an die Datenbank. jede Rundreise. Versuchen Sie dann, die Anzahl der Verbindungen zu minimieren, indem Sie die Anzahl dieser Fahrten minimieren. Auf diese Weise können Sie beide Ziele erfüllen.

Aber das ist nur eine Art der Optimierung. Es gibt auch eine Optimierung der Programmierzeit und eine effektive Wiederverwendung von Code. Entwickler möchten nicht immer wieder denselben Boilerplate-Code schreiben, nur um ein offenes und einsatzbereites Verbindungsobjekt zu erhalten. Es ist nicht nur mühsam, es ist auch eine Möglichkeit, Fehler in ein Programm einzubringen.

Aber auch hier ist es in der Regel immer noch besser, eine Verbindung pro Anfrage (oder Roundtrip) zu haben. Es gibt Muster, die Sie verwenden können, um das erneute Schreiben desselben Boilerplate-Codes zu vermeiden und gleichzeitig das Ziel einer Verbindung pro Aufruf der Datenbank beizubehalten. Hier ist ein Beispiel, das mir gefällt, aber es gibt viele andere.


Stellen Sie sich einen Außerirdischen vor, der unser Sonnensystem abfragt

Alien: Computer, bitte erzähl mir alle Planeten, auf denen Menschen leben.

Computer: 1 Ergebnis gefunden. Erde

Alien: Computer, erzähl mir bitte davon Erde.

Computer: Erde - Meist harmlos.

Alien: Computer, erzähl mir bitte von allen Planeten, die Menschen bewohnen, außerhalb des Asteroidengürtels.

Alien: Computer, bitte zerstöre die Erde.

Alien: Computer, erzähl mir bitte davon Erde.

Alien: Computer, bitte erzähl mir alle Planeten, auf denen Menschen leben.

Alien: Sieg für das mächtige Irken-Imperium!

Wenn Sie die Tatsache ignorieren, dass /GoalTree/Get* wie ein Verb und nicht wie Ressourcen aussieht, sollten Sie immer 200 zurückgeben, da der URI /GoalTree/Get* Ressourcen darstellt, die immer für den Zugriff verfügbar sind, und es kein Client-Fehler ist, wenn infolge von result kein Baum vorhanden ist eine Anfrage. Geben Sie einfach 200 mit leerem Satz zurück, wenn keine Entität zurückgegeben werden soll.

Sie verwenden 404, wenn die Ressource nicht gefunden wird, nicht wenn keine Entität vorhanden ist.

Anders ausgedrückt: Wenn Sie 404 für Ihre Objekte zurückgeben möchten, geben Sie ihnen ihre eigenen URIs.

Dies ist eine interessante Frage, denn es geht um die Spezifikation des Systems.

Die Antwort von imel96 hat mich überzeugt, dass ein 404 keine richtige Antwort wäre, da die 4xx-Code-Familie hauptsächlich für Benutzer-/Clientfehler, und das ist keiner. Die URL ist wohlgeformt und der Baum muss vorhanden sein, wenn dies nicht der Fall ist, befindet sich das System in einem inkonsistenten Zustand!

Daher ist dies ein Server Fehler, d.h. etwas in der 5xx-Familie. Möglicherweise ein generischer 500 Internal Server Error oder ein 503 Service Unavailable (der Dienst ist "hol mir den Baum, der dort sein muss").

Ich würde sagen, dass entweder ein 200- oder ein 404-Antwortcode kann gültig sein, je nachdem, wie Sie die Situation betrachten.

Die Sache ist, dass HTTP-Antwortcodes im Kontext einer Server, die verschiedene liefern kann Ressourcen basierend auf ihrer URL. In diesem Zusammenhang sind die Bedeutungen von 200 OK und 404 Not Found absolut eindeutig: Ersteres sagt "Hier ist die Ressource, nach der Sie gefragt haben", während letzteres sagt "Entschuldigung, ich habe keine solche Ressource".

In Ihrer Situation haben Sie jedoch eine zusätzliche Anwendung Schicht zwischen dem HTTP-Server und den tatsächlichen Ressourcen (Bäumen), die angefordert werden. Die Anwendung belegt eine Art Zwischenraum, der in der HTTP-Spezifikation nicht gut adressiert wird.

Aus Sicht des Webservers sieht die Anwendung application So'ne Art wie eine Ressource: Es ist normalerweise eine Datei auf dem Server, die durch (einen Teil) der URL identifiziert wird, genau wie andere Ressourcen (z. B. statische Dateien), die der Server bereitstellen könnte. Auf der anderen Seite ist es eine seltsame Art von Ressource, da sie aus ausführbarem Code besteht, der den Inhalt und möglicherweise sogar den Statuscode der Antwort dynamisch bestimmt, wodurch er sich in gewisser Weise eher wie ein Miniserver verhält.

Insbesondere in Ihrem Beispielfall kann der Webserver die Anwendung problemlos finden, aber die Anwendung kann dann die angeforderte Unterressource (Baum) nicht finden. Nun, wenn Sie die Bewerbung für gerecht halten eine Erweiterung des Servers, und das Unterelement (Baum) als tatsächliche Ressource, dann a 404-Antwort sinnvoll: Der Server hat lediglich die Aufgabe, die eigentliche Ressource zu finden, an die Anwendung delegiert, die ihrerseits dies versäumt hat.

Auf der anderen Seite, wenn Ihr Standpunkt das ist Die Anwendung ist die Ressource angefordert wird, dann sollte der Webserver natürlich a . zurückgeben 200 Antwort schließlich wurde die Anwendung gefunden und korrekt ausgeführt. Offensichtlich sollte die Anwendung in diesem Fall tatsächlich einen gültigen Antworttext im erwarteten Format zurückgeben, der anzeigt (unter Verwendung des Protokolls höherer Ebene, das das Format codiert), dass keine tatsächlichen Daten gefunden wurden, die mit der Abfrage übereinstimmen.

Beide Standpunkte können Sinn machen. In den meisten Fällen, zumindest für Anwendungen, die direkt über HTTP mit einem gewöhnlichen Webbrowser aufgerufen werden sollen, Ich würde die frühere Ansicht bevorzugen: Der Benutzer kümmert sich im Allgemeinen nicht um interne Details wie den Unterschied zwischen Server und Anwendung, sondern nur darum, ob die gewünschten Daten vorhanden sind oder nicht.

Im speziellen Fall einer Anwendung, die für die Kommunikation mit anderen Computerprogrammen unter Verwendung eines benutzerdefinierten High-Level-API-Protokolls entwickelt wurde, HTTP nur als Low-Level-Transportschicht verwenden, dafür gibt es Argumente letztere Ansicht: für Kunden, die mit einer solchen Anwendung verbunden sind, alles, was ihnen wirklich wichtig ist, auf HTTP-Ebene, ist, ob es ihnen gelungen ist, die Anwendung erfolgreich zu kontaktieren oder nicht. Alles andere wird in solchen Fällen oft selbstverständlicher über das übergeordnete Protokoll kommuniziert.

Unabhängig davon, welche der oben genannten Ansichten Sie bevorzugen, sollten Sie in jedem Fall einige Details beachten. Einer ist, dass in vielen Fällen eine sinnvolle Unterscheidung zwischen einer (im Wesentlichen) leer Ressource und a nicht existent einer.

Auf HTTP-Ebene würde eine leere Ressource einfach durch einen 200-Antwortcode und einen leeren Antworttext angezeigt, während eine nicht vorhandene Ressource durch eine 404-Antwort und einen Ressourcentext angezeigt würde, der das Fehlen der Ressource erklärt. In einem API-Protokoll einer höheren Ebene würde man typischerweise eine nicht vorhandene Ressource durch eine Fehlerantwort anzeigen, die einen geeigneten protokollspezifischen Fehlercode/eine geeignete Nachricht enthält, während eine leere Antwort einfach eine normale Antwortstruktur ohne Datenelemente wäre.

(Beachten Sie, dass eine Ressource nicht buchstäblich null Byte lang sein muss, um im obigen Sinne "leer" zu sein. Zum Beispiel würde ein Suchergebnis ohne übereinstimmende Elemente im weitesten Sinne als leer gelten, ebenso wie ein SQL-Abfrageergebnis mit keine Zeilen oder ein XML-Dokument, das keine tatsächlichen Daten enthält.)

Natürlich auch, wenn die Anwendung wirklich glaubt, dass die angeforderte Unterressource sollte vorhanden sein, ihn aber nicht finden kann, existiert ein dritter möglicher Antwortcode: 500 Internal Server Error . Eine solche Reaktion ist dann sinnvoll, wenn die Existenz der Ressource eine vermutete Voraussetzung für die Anwendung ist, so dass deren Abwesenheit zwangsläufig auf eine interne Fehlfunktion hinweist.

Schließlich solltest du immer Beachten Sie das Postelsche Gesetz:

"Seien Sie konservativ in dem, was Sie senden, und liberal in dem, was Sie empfangen."

Ob der Server sollte in einer bestimmten Situation mit einer 200- oder einer 404-Antwort reagieren, das entschuldigt nicht Sie als die Klient Implementierer nicht mit einer der Antworten angemessen umgehen und auf eine Weise, die eine robuste Interoperabilität maximiert. Natürlich kann man argumentieren, was "angemessene" Handhabung in verschiedenen Situationen bedeutet, aber es sollte sicherlich nicht normalerweise ein Abstürzen oder anderweitiges "Auseinanderfallen" beinhalten.


Wie behebt man das Problem mit dem Absturz von Excel?

Machen Sie eine kurze Vorbemerkung über die Fixes, die wir für eine einfache Reparatur verwenden werden Excel stürzt immer wieder ab Problem:

Lassen Sie uns wissen, wie Sie jede dieser Lösungen anwenden.

Fix 1: Entfernen Sie COM-Add-Ins

Die COM-Add-Ins sind sehr schlecht und dies verursacht mehrere Probleme in der Excel-Datei, daher ist es am besten, sie zu deaktivieren.

Die COM-Add-Ins kämpfen um den Speicher und führen dazu, dass Excel einfriert und Probleme abstürzt.

Am besten deaktivieren Sie also die COM-Add-Ins. Führen Sie dazu die folgenden Schritte aus:

  • Wählen Datei dann geh zu Optionen und Add-Ins.
  • Dann unten im Dialogfeld > ändern Sie die Dropdown-Menü verwalten zu COM-Add-Ins > wählen Gehen.

  • Danach deaktivieren Sie das Kontrollkästchen für die aktivierten COM-Add-Ins > klick OK.

Hoffe das deaktivieren COM-Add-Ins behebt Excel-Abstürze Probleme. Aber wenn nicht, dann folgen Sie der zweiten Lösung:

Fix 2: Entfernen Sie die Microsoft Excel-Animation

Unter mehreren Ursachen von Excel stürzt ab Problemanimation ist auch ein sehr häufiger Grund.

Die Excel-Animation ist automatisch eingeschaltet und festgestellt, dass es mehrere Probleme verursacht, führt dies häufig dazu, dass Excel langsam arbeitet und sogar abstürzt.

Also am besten umdrehen AUS der Animation.

Befolgen Sie die Schritte zum Deaktivieren der Animation in Excel:

  • Wählen Datei > Optionen.
  • Tippen Sie auf die Fortgeschritten Registerkarte und deaktivieren Sie das ‘Hardware-Grafikbeschleunigung deaktivieren’ Möglichkeit.

Dies hat einigen Benutzern geholfen, Fix Excel stürzt immer wieder ab Problem.

Fix 3: Erkunden Sie Details und Inhalte von Excel-Dateien

Die Excel-Dateien sind über einen langen Zeitraum im Computer vorhanden und werden von Version zu Version aktualisiert.

Diese wandert oft zwischen den Benutzern, und die Benutzer übernehmen die Excel-Datei, wissen aber nicht, was darin enthalten ist.

Unten aufgeführt sind die Bereiche, die verursachen Excel friert immer wieder ein wie Probleme:

  • Die Formeln, die auf ganze Spalten verweisen.
  • Mehr als Tausende von versteckten oder 0 Höhen- und Breitenobjekten
  • Die Arrayformeln, die auf eine ungerade Anzahl von Elementen in den Argumenten verweisen.
  • Unnötige Stile durch regelmäßiges Kopieren und Einfügen zwischen den Arbeitsmappen.
  • Ungültige und unnötig definierte Namen

Überprüfen Sie die Bereiche, um zu wissen, was die Ursache ist Excel-Arbeitsmappe stürzt immer wieder ab oder auf Probleme nicht reagiert.

Fix 4: Führen Sie Excel im abgesicherten Modus aus

Der abgesicherte Modus ermöglicht es den Benutzern, Excel ohne Probleme mit den Startprogrammen sicher zu verwenden.

Versuchen Sie also am besten einmal, Excel im abgesicherten Modus zu starten.

  • drücken und halten STRG beim Starten des Programms oder über die “/safe” (excel.exe /safe) Option beim Starten des Programms über die Befehlszeile.

  • Beim Ausführen von Excel im abgesicherten Modus werden dadurch Funktionen und Einstellungen wie die alternativer Startort,Symbolleistenänderungen, den xlstart-Ordner und sogar die Excel-Add-Ins.

Hoffentlich wird das Excel-Absturzproblem durch das Starten von Excel im abgesicherten Modus behoben, aber wenn nicht, wird empfohlen, das automatische MS Excel-Reparaturdienstprogramm zu verwenden, um Excel-Probleme, Fehler, Beschädigungen und andere zu beheben.

Fix 5: MS Office neu installieren und reparieren

Meistens wird festgestellt, dass die Reparatur der MS Office-Programmsuite das Absturzproblem von Excel behebt. Hauptsächlich, wenn das Problem durch das beschädigte Excel-Programm oder die MS-Office-Datei verursacht wird.

Versuchen Sie die folgenden Schritte, um diese Methode auszuführen:

  • Klicken Sie mit der rechten Maustaste auf „Start”-Taste und wählen Sie die Schalttafel.
  • Folge dem Pfad "Programme„> „Programm & Funktionen“.
  • Suche das "Microsoft Office” Programm auf der Liste. Sobald Sie es erhalten haben, klicken Sie mit der rechten Maustaste auf das Symbol und wählen Sie "Veränderung" Möglichkeit.

  • Nachdem der Reparaturvorgang abgeschlossen ist. Starten Sie die Excel-Anwendung erneut, um zu überprüfen, ob das Absturzproblem der Excel-Arbeitsmappe behoben wurde oder nicht.
  • Wenn das Problem weiterhin besteht, wenden Sie sich sofort an die „Online-Reparatur" Möglichkeit.

Fix 6: Excel friert in nur einer Tabelle ein

Wenn dieses Excel-Absturzproblem nur in einer bestimmten Excel-Tabelle auftritt. Dann ist die Wahrscheinlichkeit hoch, dass Ihre Datei ein Problem mit der bedingten Formatierung hat.

Um es zu beheben, befolgen Sie die folgenden Schritte:

  • Öffnen Sie Ihre problematische Excel-Datei.
  • Danach gehen Sie zum „Zuhause”>”Bedingte Formatierung”>”Klare Regeln”>”Regeln aus dem gesamten Blatt löschen“.

  • Sie können die obigen Schritte in jeder Ihrer Excel-Tabellen anwenden.
  • Wählen Sie das "Datei”>”Speichern als" Möglichkeit. Dadurch wird eine neue Kopie Ihrer Excel-Tabelle erstellt. Weisen Sie dieser neuen Datei einen anderen Namen zu, damit sie nicht mit der alten überschrieben wird. Die alte wird vorhanden sein, wenn Sie aufgrund von Datenverlusten darauf zurückgreifen müssen.

Fix 7: Suchen Sie nach in Konflikt stehenden Programmen oder Prozessen

Beim Booten von Windows werden viele Prozesse automatisch im Hintergrund ausgeführt. Es besteht also auch die Möglichkeit, dass diese Programme mit Ihrer Excel-Anwendung in Konflikt stehen.

Sie können entweder einen sauberen Neustart durchführen oder einen selektiven Start durchführen, um die in Konflikt stehende Anwendung zu stoppen. Hier sind die Schritte beschrieben, um diese Aufgabe auszuführen.

  • Melden Sie sich auf Ihrem PC an als Administrator.
  • Drücken Sie die +X-Tasten auf Ihrer Tastatur.
  • Wählen Sie das Lauf Option und geben Sie im geöffneten Fenster die msconfig.

  • Danach sehen Sie Dialog Systemkonfiguration erscheint auf Ihrem Bildschirm geöffnet.
  • Gehe jetzt zu Registerkarte Dienste, und setzen Sie ein Häkchen über die Option Verstecke alle Microsoft-Dienste.
  • Wähle aus Alle deaktivieren>Anwenden>OK Möglichkeit.

  • Im geöffneten Dialogfeld von Taskmanager, tippen Sie auf Anlaufen Tab. Klicken Sie nun mit der rechten Maustaste auf das Element, das Sie deaktivieren möchten, und wählen Sie das deaktivieren.

  • Schließe Taskmanager.
  • Auf der Registerkarte „Start“ vorhanden in der Systemkonfiguration des Dialogfelds. Klicken Sie auf die Option OK und starten Sie Ihren PC neu.

Iterieren durch eine SharePoint-Liste und -Elemente mit PowerShell

Ich versuche, eine Liste zu durchlaufen und Eigenschaften für einige Elemente anzuzeigen, die in dieser Liste enthalten sind, und ein oder zwei Ebenen tiefer ist dies auf einem SharePoint 2010-Server. Bisher konnte ich eine Verbindung zur Site herstellen und über die Ordner und die Elemente in der obersten Ebene iterieren, aber ich möchte die Elemente innerhalb der Ordner iterieren können. Unsere Struktur ist wie folgt:

site - http://localhost/my_site list - Seitenordner - News ItemB - Artikel ItemA - Inhalt -

Die Site ist einfach zu verbinden, damit kann ich die Liste, Ordner und ItemA's abrufen und ausgeben, damit ich sehen kann, was dort lebt. Was ich möchte, ist in der Lage zu sein, alle ItemBs (und es können viele davon) unter jedem Ordner anzuzeigen. Es gibt ungefähr 10 Ordner in der Liste, wobei jeder Ordner viele ItemBs enthält.

Was ist der einfachste Weg, um den Ordner zu finden und dann unter dem Ordner zu suchen und alle seine Elemente anzuzeigen? Meine diesbezüglichen Erfahrungen mit PowerShell und SharePoint sind begrenzt. Alle hilfreichen Hinweise sind willkommen.

Hier ist, was ich bisher habe, ich möchte den Teil haben, der Inhalt ausgibt, um die ItemBs zu notieren.


Die Grundlagen verstehen

Was ist C#?

C# ist eine von mehreren Programmiersprachen, die auf die Microsoft CLR abzielen, wodurch sie automatisch die Vorteile der sprachübergreifenden Integration und Ausnahmebehandlung, der verbesserten Sicherheit, eines vereinfachten Modells für die Komponenteninteraktion sowie der Debug- und Profilerstellungsdienste erhält.

Was ist der Unterschied zwischen C++ und C#?

C++ und C# sind zwei völlig unterschiedliche Sprachen, trotz Ähnlichkeiten in Namen und Syntax. C# wurde etwas höher entwickelt als C++, und die beiden Sprachen verfolgen auch unterschiedliche Herangehensweisen an Details, z. B. wer bestimmt, ob ein Parameter als Referenz oder als Wert übergeben wird.

Warum wird C# verwendet?

C# wird aus vielen Gründen verwendet, aber die Vorteile des Microsoft CLR-Toolsets und einer großen Entwickler-Community sind zwei Hauptanziehungspunkte der Sprache.


Schau das Video: Schleifen in Java Einführung Erklärung forwhiledo-while Schleife