Laden...

Forenbeiträge von Mazo Ingesamt 255 Beiträge

14.02.2012 - 12:33 Uhr

Hallo,

an dem Projekt wurde nicht mehr weiter gearbeitet. Unter Xp solltest du die auf Windows Forms basierende Version verwenden. Ich hab's (inkl. Quellcode) hier nochmal neu hochgeladen:
...

Viele Grüße
Mazo

07.10.2011 - 14:46 Uhr

Hallo wackelkontakt,

es läuft, aber es passiert nicht das was soll. Ich habe in der App.xaml die Ressourcen als SolidColorBrushes definiert. Diese haben eine festen Wert. Zur Laufzeit rufe ich dann aktuelle Werte vom Server ab und überschreibe die Ressourcen Application.Current.Ressources["ActiveBackgroundColor"] = newColorBrush . Damit aktualisieren sich in dem Projekt (bzw den Controls) alle Farben automatisch. Damit das mit den Controls des Toolkits (das zweite Projekt) genauso klappt, müssten diese auf die Ressource der Application des ersten Projekts gebunden werden. ResourceDictionary.MergedDictionaries Property hilft mir an der Stelle glaube ich nicht weiter, da die App.xaml ja in einem anderen Projekt liegt. Eigentlich braüchte ich nur den richtigen BindingString, der Projekt bzw Namespace mit berücksichtigt, allerdings weiß ich nicht wie ein solcher aufgebaut ist.

06.10.2011 - 10:44 Uhr

Hallo C-Sharper,

ich habe in meiner Solution 2 Projekte, das erste ist ein Toolkit und das Zweite enthält meine Oberfläche, Logik, etc. In meiner Anwendung lade ich von einem Server extern Farbwerte für die verschiedenen Controls. Nun versuche ich aus meinem Toolkit ein Binding auf eine statische Ressource in meinem anderen Projekt zu erstellen (definiert in App.xaml).

Ich hab es folgener maßen versucht:


xmlns:box="clr-namespace:Projekt.Box"
...
<Rectangle x:Name="background" Fill="{Binding Path=box:App ,Source={StaticResource ActiveBackgroundColor}}"/>

Leider klappt es weder mit eingesetztem (Path=Projekt.Box.App) noch mit ausgelagertem (Path=box:App) Namespace.

Wie wäre der richtige Lösungsweg?

Vielen Dank für euere Hilfe!

23.09.2011 - 11:35 Uhr

Hallo winSharp93,

ich hab das Control auf der gleichen Ebene, wie das LayoutGrid "verbaut". Mir ist gerade aufgefallen, dass die VisualStates allerdings erst in dem LayoutGrid definiert werden. Also hab ich es einfach eine Ebene nach unten geschoben und schon lief alles...

Die korrekte Hierarchie ist also:


<UserControl ...>
<Grid x:Name="LayoutRoot">
<VisualStateManager.VisualStateGroups ... />
<i:Interaction.Behaviors>
<ec:DataStateBehavior Value="True" FalseState="Disabled" TrueState="Enabled" Binding="{Binding IsEnabled, ElementName=userControl}"/>
</i:Interaction.Behaviors>
</Grid>
</UserControl>

VG Jan

23.09.2011 - 08:59 Uhr

Hallo,

ich hab gerade einen (neu erstellten) Thread von gestern mit F5 neu geladen und folgendes bekommen:


SQL-DATABASE ERROR

Database error in WoltLab Burning Board (2.2.1): Invalid SQL: INSERT INTO bb1_werwarda VALUES('1316760951', '5627')
mysql error: Duplicate entry '1316760951' for key 1
mysql error number: 1062
mysql version: 5.0.51a-3ubuntu5.7
php version: 5.2.4-2ubuntu5.10
Date: 23.09.2011 @ 08:55
Script: /wbb2/thread.php?threadid=98604
Referer: http://www.mycsharp.de/wbb2/newthread.php?boardid=85

VG Mazo

22.09.2011 - 12:55 Uhr

Hallo CShaper,

Ich bau zur Zeit ein Usercontrol, welches aus einem LayoutRoot(Grid), 2 (custom) Slidern und 2 Buttons besteht. Da sich das Control beim Deaktivieren nicht richtig verhält, hab ich ein DataStateBehavior verbaut, welches auf userControl.IsEnabled binded und die selbst erstellten States Enabled und Disabled ausführt.

<i:Interaction.Behaviors> <ec:DataStateBehavior Binding="{Binding IsEnabled, ElementName=userControl}" Value="True" FalseState="Disabled" TrueState="Enabled"/></i:Interaction.Behaviors>

Führe ich den Code nun aus, erhalte ich> Fehlermeldung:

Cannot find state named 'Enabled' on type 'Grid'. Ensure that the state exists and that it can be accessed from this context.

Scheinbar hab ich hier etwas nicht verstanden? Ich will nicht von dem Grid den genannten State ausführen, sondern vom UserControl.

Könnt ihr mir weiterhelfen, was ich falsch mache bzw. denke?

Danke und viele Grüße
Mazo

24.08.2011 - 19:41 Uhr

Hallo Taladan,

eine solche App lässt sich realisieren. Die Übertragung der Daten zwischen PC und WinPhone ist dabei aus meiner Sicht das schwierigste, ein "Explorer" zum direkten Kopieren der Dateien steht nicht (direkt) zur Verfügung. Es gibt im Netz einige Beispiele zum Thema (beliebige) Daten zwischen PC und Phone zu übertragen. Die Übertragung lässt sich aber auf alle Fälle über eine Client-Server-Implementierung lösen.

Viel Erfolg!

31.05.2011 - 09:46 Uhr

Die Lösung mit den eigenem WCF Servcie wird vermutlich die Finale werden,
ich werde heute mal die WP7.1 DevTools probieren, vlt ist das Problem damit behoben.

Viele Dank, für deine Hilfe 😉

30.05.2011 - 17:29 Uhr

Ich hab gerade nochmal Update ServiceReference gemacht, leider ohne Erfolg 😦
Im Reply steht:


..??Í'..*Ü5...E..? û@.?..NÀ¨*eÀ¨m.ÞUNɁ{G?J.P.Äà9ª..HTTP/1.0 500 Internal Server Error..Server: Apache-Coyote/1.1..Content-Type: text/xml;charset=UTF-8..Content-Length: 583..Date: Mon, 30 May 2011 12:43:19 GMT..X-Cache: MISS from proxy.link.de..Via: 1.0 proxy.link.de:8080 (squid/2.6.STABLE19)..Proxy-Connection: close....
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<soap:Fault>
<faultcode>soap:Server</faultcode>
<faultstring>Unknown user</faultstring>
<detail>
<ns1:ClientException xmlns:ns1="http://cllink.de/" xmlns:ns2="http://exception.cllink.de" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="ns2:ClientException">
<ns2:errorCode>MX1046</ns2:errorCode>
<ns2:exceptionMessage>Unknown user</ns2:exceptionMessage>
<ns2:exceptionType>SubjectNotAuthorized</ns2:exceptionType>
</ns1:ClientException>
</detail>
</soap:Fault>
</soap:Body>
</soap:Envelope>

Sieht eigentlich nach einem validen Code aus...

30.05.2011 - 16:06 Uhr

Also es läuft so ab (Bsp für Login und nicht getCubeState):


private Service()
{
_remoteClient = new RemoteClient("IRemotePort";); _remoteClient.loginCompleted += RemoteClientLoginCompleted;
}

public void Login(string username, string password)
{
_remoteClient.loginAsync(username, password);
}

private void RemoteClientLoginCompleted(object sender, loginCompletedEventArgs e)
{
//do sth.
}



public IAsyncResult Beginlogin(login request, AsyncCallback callback, object asyncState)
{
object[] _args = new object[1];
_args[0] = request;
IAsyncResult _result = base.BeginInvoke("login", _args, callback, asyncState);
return _result;
}

public loginResponse Endlogin(IAsyncResult result)
{
object[] _args = new object[0];
Debugger.Break();
try
{
loginResponse _result =
((loginResponse)
(base.EndInvoke("login", _args, result)));
return _result;
}
catch(Exception ex)
{
return new loginResponse();
}
}


Der Aufruf läuft so:
Login(...)
Beginlogin(...)
EndLogin(...), Hier ist result erst gefüllt, mit dem ((System.ServiceModel.Channels.ServiceChannel.SendAsyncResult)(result)).Rpc.Reply, wo der reply drins teht, dann kommt der Fehler bei base.EndInvoke, innerhalb des try blocks, dann geht er raus und der Reply ist aus result auch nicht mehr zu bekommen.
RemoteClientLoginCompleted(object sender, loginCompletedEventArgs e) wobei e.Error und e.Expression beide Could not evaluate expression haben.

30.05.2011 - 15:19 Uhr

Hallo normen,

der Fehler tritt genau beim Aufruf von base.EndInvoke("getCubeState", _args, result))); auf. Einfach das EndInvoke nicht aufzurufen, verhindert natürlich den Fehler, allerdings bekomme ich dann trotzdem nicht die ClientException zurück. In dieser stehen allerdings die wichtigen Details, was genau schief gelaufen ist.

//edit
die completed Methode wird aufgerufen, allerdings fliegt der Fehelr schon vorher...


public getCubeStateCompletedEventArgs (object[] results, Exception exception, bool cancelled, object userState) : base(exception, cancelled, userState)
{
this.results = results;
}
public string Result
        {
            get
            {
                base.RaiseExceptionIfNecessary();
                return ((string)(results[0]));
            }
        }


dabei sind: results ein array mit einem objeckt vom typ null, exception null, cancelled false, userstate null

30.05.2011 - 14:32 Uhr

Hallo CSharper,

ich programmiere zur zeit an einer WindowsPhoneApp, die ein SOAP basierten Webservice nutzt. Den Service spreche ich über einen (aus dem WSDL-File) generierten WCF Client an. Alle Aufrufe erfolgen asyncrone. Leider habe ich Probleme beim Aufruf von EndInvoke (in der Reference.cs), wenn der Service ein Fehler zurück gibt. Theoretisch müsste der Client an der Stelle EndInvoke aufrufen und eine ClientException zurückgeben (ClientException ist in der WSDL beschrieben). Statt dessen kommt der folgende Fehler. Tritt keine fehler auf funktioneirt EndInvoke.

Fehlermeldung:
base.EndInvoke("getCubeState", _args, result) fails with
InvalidCastException bei System.ServiceModel.Dispatcher.XmlSerializerObjectSerializer.ReadObject(XmlDictionaryReader reader, Boolean verifyObjectName)
bei System.Runtime.Serialization.XmlObjectSerializer.ReadObject(XmlReader reader, Boolean verifyObjectName)
bei System.Runtime.Serialization.XmlObjectSerializer.InternalReadObject(XmlReaderDelegator reader, Boolean verifyObjectName)
bei System.Runtime.Serialization.XmlObjectSerializer.ReadObjectHandleExceptions(XmlReaderDelegator reader, Boolean verifyObjectName)
bei System.Runtime.Serialization.XmlObjectSerializer.ReadObject(XmlDictionaryReader reader)
bei System.ServiceModel.Dispatcher.XmlSerializerFaultFormatter.CreateFaultException(MessageFault messageFault, String action)
bei System.ServiceModel.Dispatcher.FaultFormatter.Deserialize(MessageFault messageFault, String action)
bei System.ServiceModel.Channels.ServiceChannel.HandleReply(ProxyOperationRuntime operation, ProxyRpc& rpc)
bei System.ServiceModel.Channels.ServiceChannel.EndCall(String action, Object[] outs, IAsyncResult result)
bei System.ServiceModel.ClientBase1.ChannelBase1.EndInvoke(String methodName, Object[] args, IAsyncResult result)
bei WindowsPhoneStr.ServiceReferenceSoap.RemoteClient.RemoteClientChannel.EndgetCubeState(IAsyncResult result)
bei WindowsPhoneStr.ServiceReferenceSoap.RemoteClient.WindowsPhoneStr.ServiceReferenceSoap.IRemote.EndgetCubeState(IAsyncResult result)
bei WindowsPhoneStr.ServiceReferenceSoap.RemoteClient.OnEndgetCubeState(IAsyncResult result)
bei System.ServiceModel.ClientBase1.OnAsyncCallCompleted(IAsyncResult result)
bei System.ServiceModel.AsyncResult.Complete(Boolean completedSynchronously)
bei System.ServiceModel.AsyncResult.Complete(Boolean completedSynchronously, Exception exception)
bei System.ServiceModel.Channels.ServiceChannel.SendAsyncResult.CallComplete(Boolean completedSynchronously, Exception exception)
bei System.ServiceModel.Channels.ServiceChannel.SendAsyncResult.FinishSend(IAsyncResult result, Boolean completedSynchronously)
bei System.ServiceModel.Channels.ServiceChannel.SendAsyncResult.SendCallback(IAsyncResult result)
bei System.ServiceModel.AsyncResult.Complete(Boolean completedSynchronously)
bei System.ServiceModel.AsyncResult.Complete(Boolean completedSynchronously, Exception exception)
bei System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelAsyncRequest.OnGetResponse(IAsyncResult result)
bei System.Net.Browser.ClientHttpWebRequest.<>c__DisplayClassa.<InvokeGetResponseCallback>b__8(Object state2)
bei System.Threading.ThreadPool.WorkItem.doWork(Object o)
bei System.Threading.Timer.ring()

Das Problem beschränkt sich scheinbar auf WP7+WCF. Der gleiche Service funktioniert aus einer WPF anwendung einwandfrei.

Hier der Code, den ich verwende:



public IAsyncResult BegingetCubeState(AsyncCallback callback, object asyncState)
{
object[] _args = new object[0];
IAsyncResult _result = base.BeginInvoke("getCubeState", _args, callback, asyncState);
return _result;
}

public CubeState EndgetCubeState(IAsyncResult result)
{
object[] _args = new object[0];
CubeState _result = ((CubeState)(base.EndInvoke("getCubeState", _args, result)));
return _result;
}


[GeneratedCode("System.Xml", "4.0.30319.208";)]
[DebuggerStepThrough]
[XmlType(Namespace = "http://exception.cllink.de";)]
public class ClientException : object, INotifyPropertyChanged
{
private string errorCodeField;

private string exceptionMessageField;

private string exceptionTypeField;

/// <remarks/>
[XmlElement(IsNullable = true, Order = 0)]
public string errorCode
{
get { return errorCodeField; }
set
{
errorCodeField = value;
RaisePropertyChanged("errorCode";);
}
}

/// <remarks/>
[XmlElement(IsNullable = true, Order = 1)]
public string exceptionMessage
{
get { return exceptionMessageField; }
set
{
exceptionMessageField = value;
RaisePropertyChanged("exceptionMessage";);
}
}

/// <remarks/>
[XmlElement(IsNullable = true, Order = 2)]
public string exceptionType
{
get { return exceptionTypeField; }
set
{
exceptionTypeField = value;
RaisePropertyChanged("exceptionType";);
}
}

public event PropertyChangedEventHandler PropertyChanged;

protected void RaisePropertyChanged(string propertyName)
{
PropertyChangedEventHandler propertyChanged = PropertyChanged;
if ((propertyChanged != null))
{
propertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
}


Habt ihr eine Idee, wo genau das Problem liegt und wie man es beheben kann?

Vielen Dank,
Mazo

15.04.2011 - 12:26 Uhr

Für alle, die es noch nicht gelesen haben:

Microsoft hat im Rahmen der MIX11 die erste Vorabversion (Beta 1) von Silverlight 5 freigegeben.

Die wichtigsten Beta-Neuerungen:

XAML Debugging with breakpoints for binding debugging

Implicit data templates for easy UI reuse

Double (and multi) click support

GPU-accelerated XNA-compatible 3D and immediate-mode 2D API

Low-latency sound effects and WAV support

Real operating system windows and multi-display support

Significant performance improvements, fixes and much more

Die Betatools sind in Englisch erhältlich:

Mehr Informationen
Download Microsoft Silverlight 5 Beta Tools for Visual Studio 2010 Service Pack 1
Download Microsoft Expression Blend Preview for Silverlight 5

Viel Spaß beim Testen!

11.04.2011 - 14:16 Uhr

Hallo,

ich hab eine Lösung gefunden, indem ich nicht den MessageHeader modifiziere, sondern das HttpRequestMessageProperty...

Hier der Code:


public void GetState()
{
using (new System.ServiceModel.OperationContextScope(_remoteClient.InnerChannel))
{
HttpRequestMessageProperty request = new HttpRequestMessageProperty();
request.Headers["SessionToken"] = "abcTokensTunWeh";
OperationContext.Current.OutgoingMessageProperties[HttpRequestMessageProperty.Name] = request;

_remoteClient.getStateAsync();
}
}

Evtl hilft es jemanden 😉

Viele Grüße

06.04.2011 - 20:00 Uhr

Hallo CSharper,

ich hab heut mal ein etwas anderes Problem...
Ich hab ein SOAP-Webservice (mit wsdl), den ich über eine von VS generierte Klasse anspreche. Die Klasse verwendet WCF. Leider benötige ich für die Kommunikation noch ein zusätzlichen HTTP-Header in jedem Request.

Ich hab versucht das exemplarisch für ein Request zu lösen mit:


public void GetState()
{
using (new System.ServiceModel.OperationContextScope(_remoteClient.InnerChannel))
{
MessageHeader head = MessageHeader.CreateHeader("SessionToken", "", "abc123";);
OperationContext.Current.OutgoingMessageHeaders.Add(head);

_remoteClient.getStateAsync();
}
}


Leider habe ich dadurch den SOAP Header geändert:


....¬...??Í'..E..¬.?@.?.¢#À¨m²MM=×?.PÕý¢...?tP...ýÙ..POST /development/soap/api HTTP/1.1..Accept: */*..Referer: file:///Applications/Install/CC7A86AB-40DD-42A6-B92C-D66194FD7067/Install/..Content-Length: 311..Accept-Encoding: identity..Content-Type: text/xml; charset=utf-8..SOAPAction: ""..User-Agent: NativeHost..Host: 111.11.11.11..Connection: Keep-Alive..Cache-Control: no-cache....<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"><s:Header><SessionToken>123abc</SessionToken></s:Header><s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><getState xmlns="http://cl.url.de/" /></s:Body></s:Envelope>

Hat jemand eine Idee, wie ich an den HTML Header rankomme?

Danke für Eure Hilfe!
Mazo

13.03.2011 - 10:51 Uhr

Ich hab inetwa Stück code, was ich oben gepostet habe mit einem Image Control in Silverlight 4 probiert und das Bild wurde angezeigt. Browser ist dabei Chrome gewesen. Ich hab Uri = Absolute genommen vlt wirkt sich das noch aus.


using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media;

namespace SilverlightApplication2
{
public partial class MainPage : UserControl
{
public MainPage()
{
InitializeComponent();
}

private void LayoutRoot_Loaded(object sender, RoutedEventArgs e)
{
Image image = new Image();
Uri uri = new Uri("http://www.einfach-persoenlich.de/photoblog/bilder/netz-auge.jpg", UriKind.Absolute);
ImageSource img = new System.Windows.Media.Imaging.BitmapImage(uri);
image.SetValue(Image.SourceProperty, img);
image1.Source = image.Source;

}
}
}


<UserControl x:Class="SilverlightApplication2.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="400">

<Grid x:Name="LayoutRoot" Background="White" Loaded="LayoutRoot_Loaded">
<Image Height="150" HorizontalAlignment="Left" Margin="60,98,0,0" Name="image1" Stretch="Fill" VerticalAlignment="Top" Width="200" />
</Grid>
</UserControl>

11.03.2011 - 18:09 Uhr

Hi,

mein Fehler.
Dir fehlt eine Konvertierung:


ImageSource imgS = new BitmapImage(
         new Uri("http://www.einfach-persoenlich.de/photoblog/bilder/netz-auge.jpg", UriKind.RelativeOrAbsolute));
image.SetValue(Image.SourceProperty, imgS);
//bzw. müsste auch gehen:
image.Source = imgS;


11.03.2011 - 14:45 Uhr

Hallo MXP,

versuch es doch mal über ein BitmapDecoder:


private void GetWebImage(Image image, Uri webUri)
{
BitmapDecoder bDecoder = BitmapDecoder.Create(
webUri,
BitmapCreateOptions.PreservePixelFormat,
BitmapCacheOption.None);

if (bDecoder != null && bDecoder.Frames.Count > 0)
image.Source = bDecoder.Frames[0];
}

private void Window_Loaded(object sender, RoutedEventArgs e)
{

GetWebImage(image1, new Uri("http://www.ebsi.te/abc123.jpg";));
}


07.12.2010 - 08:49 Uhr

Hallo MarsStein,

das ist genau das, was ich gebraucht habe!

Vielen Dank,
Mazo

06.12.2010 - 10:18 Uhr

Hallo C-Sharper,

ich hab ein kleines Schönheitsproblem in meinem Code. Zuerst ein bisschen Code:


[DataContract]
public class User
{
[DataMember]
public string Name { get; set; }

[DataMember]
public int Age { get; set; }

public User() { }

public User(string newName, int newAge)
{
Name = newName;
Age = newAge;
}

}

Das ist bespielhaft meine Datenklasse. Die Properties sind alle groß geschrieben. In meinem Programm bekomm ich allerdings ein JSON Objekt in der Form "{'name':'Bill', 'age':53}" zurück, mit klein geschriebenen Properties. Nun streubt sich der DataContractJsonSerializer den JSON-String in meine Klasse zu konvertieren solange ich die Properties nicht auch kleinschreibe, was wiederrum schrecklich aussieht...
Gibt es eine Lösung ein "IgnoreCase" zu erzwingen? - Das trotz klein geschriebener Properties im JSON-String mein Objekt mit groß geschriebenen Properties arbeiten kann?

Danke für eure Hilfe!

Mazo

06.10.2010 - 17:33 Uhr

Hallo icolor,

hier gibt gab es die Versionsstände, wie sie bei mir auf der HDD liegen (0.7.1 WinForms und 0.8.0 WPF).

Viele Grüße,
Mazo

23.09.2010 - 21:38 Uhr

Hallo mcpd,

nimmst du noch die Betatools oder die Final?

Ich hab leider noch nicht mit der Final gearbeitet, erinner mich aber daran,
dass in der Beta direktes (Bilder) laden von dynamisch generierten URIs nicht möglich war.
Du solltest beim Debugen sehen, dass die ImagSource leer bzw fehlerhaft ist. Daher auch das leere Bild.

Teste am Besten mal eine feste URI und schau ob das Bild dann geladen wird. Wenn dies der Fall ist liegt es an dem Problem.

Ich hatte das auch und hab das so gelöst (Workaround - WP7 BETA Code):


//Load BitmapImage
if (myFile.FileExists(filepath + ".jpg";))
{

myStream = myFile.OpenFile(filepath + ".jpg", FileMode.Open);

// Decode the JPEG stream.
WriteableBitmap myBitmap = PictureDecoder.DecodeJpeg(myStream);

myStream.Close();
myStream.Dispose();

MemoryStream ms = new MemoryStream();
BitmapImage bmp = new BitmapImage();

//Convert WriteableBitmap to BitmapImage
myBitmap.SaveJpeg(ms, myBitmap.PixelWidth, myBitmap.PixelHeight, 0, 100);
bmp.SetSource(ms);

this.addToImages(bmp));
}
else
{...}

Ich hoffe es hilft dir weiter,
Mazo

P.S. WP7 rulez 😄

14.09.2010 - 10:41 Uhr

Hallo nochmal,

die Lösung funktioniert relativ gut, die meisten überflüßigen Datenanfragen kann ich so verhindern. Es kommt vor, dass die Eingabe und Abfrage gleichzeitig auftreten und somit die Abfrage trotzdem durchgeführt wird, aber das ist ehr die Ausnahme.

Ich bin sozusagen glücklich 😄

Danke nochmal für eure Hilfe
Mazo

14.09.2010 - 08:36 Uhr

Hallo gfoidl,
danke für deinen umfangreichen Lösungsansatz. Die OneWay Version hört sich in meinen Ohren nach einer guten Idee an. Ich werde mein Service jetzt umschreiben und dann berichten, ob das Problem damit wirklich gelöst wurde.

Grüße Mazo

P.S: In deinem Beispiel Projekt hast du komische Assemblys eingebunden (nuint.framewrok, moq), der Code ist trotzdem hilfreich 😉

13.09.2010 - 16:23 Uhr

Hallo,

das mit den Sessions nehm ich mir mal vor und werde es ausprobieren [morgen 😄].

IChannel Abort hab ich schon getestet. Es entsteht das gleiche Problem ich "brech" damit den Channel ab ("immediately from its current state into the closed state") und muss ihn neu aufmachen um ihn wiederzuverwenden.

Danke für eure Antworten,
Mazo

13.09.2010 - 11:13 Uhr

Hallo Viper78,

ich hab die Methode mit Close über ChannelFactory probiert, bekomme leider jedoch kein neuen Channel schnell genug auf.

Ich werde mich wohl nach einer anderen Lösung umschauen, womit das Problem umgangen werden kann.

Grüße Mazo

10.09.2010 - 08:40 Uhr

Hallo gfoidl,

der WCF Service wird asynchron ausgeführt. Er kann auch mehrere Anfragen parallel verarbeiten. Mir geht es drum, das Senden der Antwort an den Client zu verhindern, wenn dieser schon eine neue Anfrage gestellt hat.

Mazo

09.09.2010 - 10:40 Uhr

Hallo,
ich hab ein Service der auf Nutzereingaben antworten liefert. Es kommt vor, dass der Nutzer schneller ist als der Service. Nun will ich den Service irgendwie mitteilen,dass er die vorherige Anfrage abbrechen soll und die neue Anfrage bearbeiten.

Gibt es da eine vorgefertigte Lösung ( in WCF integriert) oder muss man sich selbst darum kümmern?

Grüße Mazo

31.08.2010 - 11:42 Uhr

Hallo,

ich versuche mich zur Zeit an einem WCF Service der auf eine Datenbank zurück greift.

Ich hab folgendes Interface erstellt:


[ServiceContract]
public interface IServiceData
{
[OperationContract]
bool SaveContact(string Name, string FirstName, string Number);

[OperationContract]
List<Contact> GetContacts();

}

[DataContract]
public class ContactDataBase : DataContext
{
public Table<Contact> Contacts;

public ContactDataBase(string connstr) : base(connstr)
{
}
}

[DataContract]
[Table(Name = "Contacts";)]
public class Contact
{
[DataMember]
[Column(IsPrimaryKey = true, Storage = "Name";)]
public string Name { get; set; }

[DataMember]
[Column(Storage = "FirstName";)]
public string FirstName { get; set; }

[DataMember]
[Column(Storage = "Number";)]
public string Number { get; set; }

//public BitmapImage Pic { get; set; }

public Contact()
{
this.Name = "";
this.FirstName = "";
this.Number = "";
// this.Pic = null;
}

public Contact(string Name, string FirstName, string Number)
{
this.Name = Name;
this.FirstName = FirstName;
this.Number = Number;
// this.Pic = null;
}


Meine MSSQL Datenbank hat eine Tabele "Contacts" und die Spalten "Name" (nchar(20), primarykey) [mir ist klar, dass der name kein guter pkey ist], "FirstName" (nchar(20)), "Number" (nchar(30)).
Beim Aufruf von ContactDataBase(...) bekomm ich nun den Fehler "Fehlerhafte Storage-Eigenschaft: "Name" im Element "Namespace.Contact.Name"."

Zum testen des Services nutze ich den WCF Test Client.

Kann mir jemand sagen, was ich falsch gemacht habe?

Danke und Grüße,
Mazo

20.08.2010 - 13:19 Uhr

Hi CSharper,

ich bin in einem MSDN Programmbeispiel über folgendes gestoßen:


List<Uri> subscribers = RegistrationService.GetSubscribers();
ThreadPool.QueueUserWorkItem((unused) => notifier.SendTileNotification(subscribers, "PushNotificationsToken", "/Images/" + weatherType + ".png", temperature, location, OnMessageSent));

Kann jemand von euch erklären, was diese Stück Code macht (der Teil in den Klammern 😉)

Danke für eure Hilfe,
Mazo

09.05.2010 - 23:29 Uhr

ok danke für die schnelle Info. Mit der Dll bzw. dem Release von codeplex geht es.

09.05.2010 - 22:01 Uhr

Hallo,
ich hab eine Anwendung die in einem Subwindow ein Datepicker beinhaltet. Bei mir läuft das auch super. Auf einem anderen PC kommt allerdings ein Fehler(siehe Anhang) beim Aufruf des Subwindows womit ich nichts anzufangen weiß... Auf beiden PCs ist .net4.0 installiert...

Habt ihr eine Idee woran das liegen kann?

Meine Windowdefintion:


<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:Custom="http://schemas.microsoft.com/wpf/2008/toolkit" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d" xmlns:chartingToolkit="clr-namespace:System.Windows.Controls.DataVisualization.Charting;assembly=System.Windows.Controls.DataVisualization.Toolkit"
x:Class="Projekt_Manager.LogWindow"
x:Name="Window"
Title="LogWindow"
Width="390" Height="388" Loaded="Window_Loaded">

Danke für eure Hilfe,
Mazo

07.05.2010 - 12:07 Uhr

Hallo inflames2k,
leider treten noch eine Menge Fehler und Probleme auf, da die Taskleiste nie fertig entwickelt wurde.

Die neuste Version unterstützt (noch) kein Windows XP. Du könntest die Version 0.7.1. versuchen, wenn die noch irgendjemand hat...

Ich kann leider auch nicht sagen, dass eine Weiterentwicklung, von mir, in nächster Zeit geplant ist.

Grüße Mazo

26.04.2010 - 10:32 Uhr

Hallo,danke für eure Antworten.

eigenlich sollte diese Klasse ja nicht's vom GUI wissen. Mit Ereignissen kannst Du von anderen Klasse auch mit dem GUI kommunizieren und die Log-Messages an die TextBox weiter geben. Das war der richtige Ansatz. Ich werf jetzt einfach jedesmal ein Event raus wenn die Instanz eine LogNachricht schreiben will - damit funktioneirt es.
wenn ich das richtig verstanden habe, möchtest Du ein Fenster fernsteuern. TCP-Sockets sind dafür nicht die Erste Wahl. Mit Remoting würdest Du schneller bessere Ergebnisse erzielen. An sich will ich nur aus verschiedenen Threads in die gleiche textbox LogNachrichten ausgeben, um zu überprüfen was über die Sockets so für Daten reinkommen.

Grüße Mazo

26.04.2010 - 00:17 Uhr

Hallo,
danke für deine schnelle Antwort. Bei static müsste die textBox1 auch static sein bzw müsste man diese über MainWindowServer.textBox1 aufrufen. Unter MainWindowServer.* wird allerdigns weder textBox1 gefunden oder die Methode WriteLogMessenger. Könnte ich aus der Class MainWindowServer das "this" übergeben an die Serverinstance? Ich hab jetzt dem Window ein Name-Attribut gesetzt, allerdigns hilft das nicht weiter ...
Gruß Mazo

25.04.2010 - 23:11 Uhr

Hallo,
ich bin etwas raus aus CSharp und finde den grund nicht warum bei folgendem Code (gekürzt) in der Klasse ServerInstance in der Methode Receive nicht auf WriteLogMessage aus MainWindow zugegriffen werden kann... Eigentlich ist diese public und ich müsste darauf zugreifen können?


using System;
using System.Windows;
using System.IO;
using System.Net;
using System.Net.Sockets;
using System.Threading;
using System.Collections;
using System.Windows.Threading;


namespace Projekt_Manager_Server
{

public partial class MainWindowServer : Window
{
public int CurrentConnections = 0;
public int serverListenPort = 10000;
public const int maxServerConnections = 100;

public System.Collections.ArrayList Clients = new ArrayList(maxServerConnections);
public int sleepTime = 200;
public int TimeOut = 2000;
public IPAddress ipAddress = IPAddress.Any;//Dns.Resolve("127.0.0.1";).AddressList[0];
private Thread mainThread;

public delegate void MyDelegate();

public void WriteLogMessage(string Text)
{
textBox1.Dispatcher.Invoke(DispatcherPriority.Normal, (MyDelegate)
delegate()
{
textBox1.Text += Text + "\r\n";
});
}

public void mainListener()
{
// Alle Netzwerk-Schnittstellen abhören
TcpListener listener = new TcpListener(ipAddress, serverListenPort);
WriteLogMessage("Listening on port " + serverListenPort + "...";);
try
{
listener.Start();
// Solange Clients akzeptieren, bis das
// angegebene Maximum erreicht ist
while (CurrentConnections <= maxServerConnections)
{
while (!listener.Pending()) { Thread.Sleep(sleepTime); }
Socket newSocket = listener.AcceptSocket();
if (newSocket != null)
{
CurrentConnections++;
// Mitteilung bzgl. neuer Clientverbindung
("Neue Client-Verbindung (" +
"IP: " + newSocket.RemoteEndPoint + ", " +
"Port " + ((IPEndPoint)newSocket.LocalEndPoint).Port.ToString() + ";)";);
// Instanz der serverseitigen Verwaltungsklasse erzeugen
serverInstance newConnection = new serverInstance(newSocket);
Clients.Add(newConnection);
}
}
}
catch{...}
}

public void Window_Loaded(object sender, RoutedEventArgs e)
{
// Hauptthread wird instanziiert ...
mainThread = new Thread(new ThreadStart(this.mainListener));
// ... und gestartet
mainThread.Start();

}
}


class serverInstance
{
const int SleepTime = 200;
public Thread serverThread;
public Socket socket;
const int BufferSize = 10240;

public serverInstance(Socket socket)
{
// Thread erzeugen
serverThread = new Thread(new ThreadStart(Process));
serverThread.Start();
}

public void Process()
{
MemoryStream mem = new MemoryStream();// Empfangspuffer
byte[] buffer = new byte[BufferSize];
int TimeOut = 0;
newMessage("Server gestartet";);
while (TimeOut < (10 * 1000 / SleepTime))
{
mem.Seek(0, SeekOrigin.Begin);
mem.SetLength(0);
while (socket.Available > 0)
{
int bytesRead = socket.Receive(buffer, buffer.Length, SocketFlags.None);
if (bytesRead <= 0) continue;
mem.Write(buffer, 0, bytesRead);
}
if (mem.Length > 0)
{
if (mem.Length == 4)
if (System.Text.Encoding.ASCII.GetString(mem.ToArray(), 0, 4) == "quit";)
{
closeConnection();
break;
}
Receive(mem.ToArray());
mem.Seek(0, SeekOrigin.Begin);
mem.SetLength(0);
TimeOut = 0;
}
else
{
TimeOut++;
Thread.Sleep(SleepTime);
}
}
closeConnection();
socket.Close();
socket = null;
serverThread.Abort();
}

public void Receive(byte[] data)
{
//WriteLogMessage(data.Length+" bytes received";);
WriteLogMessage("Received: " + System.Text.Encoding.ASCII.GetString(data));//Wird nicht gefunden - MainWindow.WriteLogMessage auch nicht
int bytesSend = socket.Send(data);
//WriteLogMessage(bytesSend+" bytes returned to sender";);
}

}
}

05.02.2010 - 17:54 Uhr

Hallo Xqgene,
mir gefällt die neue Version auch gut! Ich würd es auch Klasse finden, wenn du wieder ein Visual Studio AddIn (2005, 2008, 2010) entwickeln würdest. Ich nutze immernoch dein ToDo-Addin in der ersten Version für Visual Studio und würde mich auch über eine v2 freuen!

Grüße Mazo

04.02.2010 - 23:31 Uhr

Die Funktion ist Teil des Codes im verlinkten Thread. Du kannst glassify einfach aufrufen wenn du den Code verwendest:


public static bool glassify(Form gForm)
{...}
bzw.
public static bool glassify(Form gForm, Control gPanel)
{...}

Wenn du lieber selber was, direkt mit der .dll, basteln möchtest, kann ich dir noch diesen Artikel (bei MSDN) empfehlen. Meiner Meinung nach ein guter Überblick über die dwmapi.dll

Grüße Mazo

19.11.2009 - 15:00 Uhr

... Einmal mit nochmal auf "jetzt anfordern" - dann bekommt man ein Formular wo man was ausfüllt und kommt dann zu ner Downloadseite wo man zwischen 32 und 64 Bit und den Sprachen wählen kann.
...

ok Danke, ich bin über Entwickler gegangen und da gabs das nciht -> warum einfach wenn's auch schwer geht...

Was Outlook angeht sollte man noch beachten, dass die 64bit-Version momentan noch nicht mit dem Windows Mobile Device Center funktioniert. Mit der 32bit-Version geht es allerdings.

Das ist ein interessanter Punkt. Leider geht bei mir die x86 Office Variante nicht zu installieren
und die Fehlerlösung hilft auch nicht (Error 1935. An error ocurred during the installation of assembly component
{167A8BB9-1A64-362B-8E09-4FD881F0108E}. HRESULT:0x80070091)

Wäre ja schon froh wenn die x64 läuft, wenn auch ohne wm sync.

Grüße Mazo

19.11.2009 - 09:15 Uhr

Hallo,
es gibt die Office2010 Beta ja nun öffentlich,
leider hab ich bisher nur die 32bit Variante gefunden...
Hat irgendjemand die 64bit Variante gesehen in ger/eng?

Gruß Mazo

06.11.2009 - 16:50 Uhr

ok,
ich hab das Problem gerade bei einem Freund reproduzieren können ich selbst nutze Win7 anscheinend gibt es Probleme mit der dwmapi.dll... Ich suche mal nach einer Lösung an sich sollte WindowsVista damit klar kommen 😄

Grüße Mazo

06.11.2009 - 14:45 Uhr

Hallo blutiger_anfänger,
ist das dein primärer oder sekundärer Bildschirm?
Und kommen beim Start irgendwelche fehler? Hat das Startmeü ein Hintergrund?

Grüße Mazo

05.11.2009 - 23:00 Uhr

Hallo myCSharper,
ich hab diese alte Projekt von mir wieder ausgestaubt und reichlich überarbeitet.
Die Taskleiste gibt es nun in Version 0.8.0, welche allerdings mehr Neuentwicklung als Update darstellt. Ich habe versucht die meisten Features der "alten" Taskleiste schon mit zu Integrieren, allerdings kann es sein, dass Einige noch fehlen 😉. Mit dem Update benötigt die Taskleiste .Net 3.5 und die XP Kompatiblität ist leider auch in weite Ferne gerückt, da die Taskleise verstärkt Aero Glass verwendet. Die positve Nachricht hierzu ist, ich arbeite dran 😉. Mit Windows 7 sieht die ganze Sache schon besser aus, dies sollte vollständig unterstützt werden. Ihr solltet in den Einstellungen (Rechtklick) immer das richtige System wählen, damit die Quicklaunch und Startmenü Inhalte richtig angezeigt werden...
Ja ich schreib euch hier noch ein Stück Changelog hin,
ich befürchte auf den verschiedenen Systemen kommt es noch zu Fehlern (XP/VISTA/7), diese könnt ihr hier posten oder mir per PM schicken, wenn ihr noch Wünsche habt was in das Tool mit rein soll könnt ihr das natürlich auch schreiben =)

Die Anwendung und der Quellcode sind als externer Download immer auch im ersten Post zu finden und am Ende des dritten als Dateianhang.

Ich hoffe ihr habt Spaß beim Testen,
Grüße Mazo



- Diese Version stellt keine direkte Weiterentwicklung der Version 0.7.1 da
- Umstellung auf .Net Framework 3.5
- Umstellung auf WPF
- ReCode von mehreren Codesegmenten
- Windows 7 wird unterstüzt
- Diese Version unterstüzt Windows XP nicht (Unterstützung ist wieder geplant)
- Verwendung von Aero Glass - Automatische Farbanpassung des Hintergrundes
- Verbesserung der Timer Routinen - Weniger CPU Auslastung
- Alle Buttons im Startmenü sollten nun funktionieren
- ReCode von GlassButtons - Glassbutton.dll wird nciht mehr benötigt
- Verbesserung der Vorschaufunktion
- Wesentlich weniger integrierte Grafiken -> Datei stark verkleinert
- Verbesserung der Abfrage des Startmenü Inhaltes
- ...

05.11.2009 - 10:07 Uhr

Hallo markus111,
an sich möchte ich das Template der Toolbar so anpassen, dass der Contentbereich wie ein Wrappanel funktioniert. Wenn die obere Zeile voll ist sollen die nächsten Items in der zweiten Zeile angezeigt werden und wenn die voll ist soll es ein overflow geben. Das ganze wollte ich ohne code machen, sondern möglichst im template definiert. Das Blöde ist das man im contentpresenter der toolbar kein wrappanel definieren kann...

Grüße Mazo

04.11.2009 - 12:02 Uhr

ok ich hab mal noch ein bisschen probiert und dabei eine interessant funktion gefunden - allerdings benötige ich damit immer noch System.Drawing.Icon


System.Drawing.Icon ico = GetAppIcon(WnD.Handle);
myImage.Source = Imaging.CreateBitmapSourceFromHIcon(
ico.Handle,
new Int32Rect(0, 0, ico.Width, ico.Height),
BitmapSizeOptions.FromEmptyOptions());

Ansonsten funktioniert es allerdings 😃

Grüße Mazo

04.11.2009 - 11:51 Uhr

ich verwende System.Drawing.ICon weil ich auf die Funktion System.Drawing.Icon.FromHandle(iconHandle);
zurückgreife und mir nicht bekannt ist wie das unter WPF funktioniert ...
damit bekomm ich das Icon und das muss dann in das Image

Gruß Mazo

04.11.2009 - 01:26 Uhr

Hi,
ich versuche ein Icon in einem Imagecontrol darzustellen. Leider gehen bei dem Versuch Informationen verloren und das Icon sieht danach schrecklich aus...


MemoryStream strm = new MemoryStream();
(System.Drawing.Icon)myIcon.Save(strm);
IconBitmapDecoder ibd = new IconBitmapDecoder(strm, BitmapCreateOptions.None, BitmapCacheOption.Default);
myImage.Source = ibd.Frames[0];


Was mach ich falsch bzw wie kann man das ganze besser lösen?

Grüße Mazo

03.11.2009 - 18:15 Uhr

Hallo,
ich möchte gerne eine Toolbar basteln die die Items in 2(+) Zeilen anzeigt und bei der Overflow funktioniert. Hat jemand eine Idee wie man da vorgeht?

Gruß Mazo

22.10.2009 - 12:23 Uhr

Hi,
ich nutze zur Zeit Windows 7 Ultimate x64 über MSDN Subscription.
weiterhin hab ich auf meinem Netbook Windows 7 Professional x64 über MSDN AA.

Gruß Mazo

20.10.2009 - 20:10 Uhr

Hallo CSharper 😃
Wie einige sicher schon wissen, ist Visual Studio 2010 und .NET Framework 4 Beta 2 fertig und kann über MSDN Subscription bereits gedownloadet werden.
Alle die diese Möglichkeit nicht haben müssen sich nicht mehr lange gedulden, denn ab Morgen (21.10) wird die Beta 2 für alle zugänglich sein.
Visiual Studio steht in englischer Sprache in 3 Versionen zur Verfügung: Premium, Professional und Ultimate.

Visual Studio 2010 und .NET Framework 4 Beta 2 auf msdn.com

Viel Spaß bei Testen!

Gruß Mazo